{
 "cells": [
  {
   "cell_type": "code",
   "execution_count": 1,
   "metadata": {},
   "outputs": [],
   "source": [
    "import ssms"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 8,
   "metadata": {},
   "outputs": [],
   "source": [
    "from matplotlib import pyplot as plt\n",
    "from ssms.basic_simulators import simulator\n",
    "\n",
    "x = ssms.basic_simulators.simulator.simulator(\n",
    "    model=\"ddm\",\n",
    "    theta=[0.5, 1.5, 0.5, 0.5],\n",
    "    n_samples=1000,\n",
    "    no_noise=True,\n",
    "    smooth_unif=True,\n",
    "    random_state=42,\n",
    ")\n",
    "\n",
    "y = ssms.basic_simulators.simulator.simulator(\n",
    "    model=\"ddm\",\n",
    "    theta=[0.5, 1.5, 0.5, 0.5],\n",
    "    n_samples=1000,\n",
    "    no_noise=True,\n",
    "    smooth_unif=True,\n",
    "    random_state=42,\n",
    ")"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 9,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "True"
      ]
     },
     "execution_count": 9,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "import numpy as np\n",
    "\n",
    "np.allclose(x[\"rts\"], y[\"rts\"])"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 9,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "array([[3.5006232],\n",
       "       [3.5014477],\n",
       "       [3.500876 ],\n",
       "       [3.5011325],\n",
       "       [3.500506 ],\n",
       "       [3.5009356],\n",
       "       [3.501341 ],\n",
       "       [3.500977 ],\n",
       "       [3.5013583],\n",
       "       [3.5010738],\n",
       "       [3.500704 ],\n",
       "       [3.5012116],\n",
       "       [3.501125 ],\n",
       "       [3.5013647],\n",
       "       [3.5006402],\n",
       "       [3.5010223],\n",
       "       [3.5010972],\n",
       "       [3.5009327],\n",
       "       [3.501087 ],\n",
       "       [3.5007365],\n",
       "       [3.5011234],\n",
       "       [3.500977 ],\n",
       "       [3.5013196],\n",
       "       [3.5009334],\n",
       "       [3.5008025],\n",
       "       [3.5010114],\n",
       "       [3.500857 ],\n",
       "       [3.501368 ],\n",
       "       [3.5011575],\n",
       "       [3.5008292],\n",
       "       [3.5014467],\n",
       "       [3.501049 ],\n",
       "       [3.5014381],\n",
       "       [3.5013497],\n",
       "       [3.501414 ],\n",
       "       [3.5014591],\n",
       "       [3.5005238],\n",
       "       [3.5005927],\n",
       "       [3.5006237],\n",
       "       [3.5012066],\n",
       "       [3.5007994],\n",
       "       [3.501283 ],\n",
       "       [3.5006723],\n",
       "       [3.5007262],\n",
       "       [3.500693 ],\n",
       "       [3.5012913],\n",
       "       [3.5011601],\n",
       "       [3.5009854],\n",
       "       [3.50082  ],\n",
       "       [3.50121  ],\n",
       "       [3.5005362],\n",
       "       [3.5011232],\n",
       "       [3.5009584],\n",
       "       [3.5010018],\n",
       "       [3.5005765],\n",
       "       [3.5012403],\n",
       "       [3.501319 ],\n",
       "       [3.5010111],\n",
       "       [3.5010495],\n",
       "       [3.5007937],\n",
       "       [3.5012498],\n",
       "       [3.5014555],\n",
       "       [3.501424 ],\n",
       "       [3.5005043],\n",
       "       [3.501353 ],\n",
       "       [3.5011733],\n",
       "       [3.5011566],\n",
       "       [3.5004785],\n",
       "       [3.5012076],\n",
       "       [3.5010412],\n",
       "       [3.501277 ],\n",
       "       [3.5007343],\n",
       "       [3.5010815],\n",
       "       [3.500661 ],\n",
       "       [3.5010877],\n",
       "       [3.5013397],\n",
       "       [3.5006082],\n",
       "       [3.5007756],\n",
       "       [3.5010543],\n",
       "       [3.5008314],\n",
       "       [3.5012615],\n",
       "       [3.500622 ],\n",
       "       [3.5010085],\n",
       "       [3.5007343],\n",
       "       [3.501454 ],\n",
       "       [3.5013506],\n",
       "       [3.500866 ],\n",
       "       [3.5011172],\n",
       "       [3.501118 ],\n",
       "       [3.500817 ],\n",
       "       [3.501443 ],\n",
       "       [3.5014596],\n",
       "       [3.501321 ],\n",
       "       [3.5005574],\n",
       "       [3.5009959],\n",
       "       [3.5008333],\n",
       "       [3.5010488],\n",
       "       [3.5010214],\n",
       "       [3.5014215],\n",
       "       [3.5004857],\n",
       "       [3.5004933],\n",
       "       [3.5012102],\n",
       "       [3.5014355],\n",
       "       [3.5007808],\n",
       "       [3.500884 ],\n",
       "       [3.5010245],\n",
       "       [3.501425 ],\n",
       "       [3.501044 ],\n",
       "       [3.5011947],\n",
       "       [3.5012603],\n",
       "       [3.5005252],\n",
       "       [3.5007358],\n",
       "       [3.50123  ],\n",
       "       [3.5008304],\n",
       "       [3.5009634],\n",
       "       [3.501067 ],\n",
       "       [3.5004904],\n",
       "       [3.5005634],\n",
       "       [3.5008564],\n",
       "       [3.5006907],\n",
       "       [3.5014284],\n",
       "       [3.500493 ],\n",
       "       [3.5009556],\n",
       "       [3.5005283],\n",
       "       [3.501315 ],\n",
       "       [3.5010211],\n",
       "       [3.5010765],\n",
       "       [3.5008063],\n",
       "       [3.501273 ],\n",
       "       [3.5006196],\n",
       "       [3.501374 ],\n",
       "       [3.5008366],\n",
       "       [3.5011675],\n",
       "       [3.500733 ],\n",
       "       [3.50144  ],\n",
       "       [3.5009205],\n",
       "       [3.500527 ],\n",
       "       [3.501305 ],\n",
       "       [3.5005093],\n",
       "       [3.5014012],\n",
       "       [3.5005896],\n",
       "       [3.5007184],\n",
       "       [3.5007272],\n",
       "       [3.501235 ],\n",
       "       [3.50104  ],\n",
       "       [3.5013587],\n",
       "       [3.5010238],\n",
       "       [3.501315 ],\n",
       "       [3.5010738],\n",
       "       [3.5011947],\n",
       "       [3.5013056],\n",
       "       [3.500557 ],\n",
       "       [3.5010312],\n",
       "       [3.501435 ],\n",
       "       [3.5010786],\n",
       "       [3.5009294],\n",
       "       [3.5005174],\n",
       "       [3.5005646],\n",
       "       [3.501126 ],\n",
       "       [3.5012622],\n",
       "       [3.500636 ],\n",
       "       [3.5008776],\n",
       "       [3.5010629],\n",
       "       [3.5011084],\n",
       "       [3.5009756],\n",
       "       [3.5011008],\n",
       "       [3.5006557],\n",
       "       [3.500564 ],\n",
       "       [3.501126 ],\n",
       "       [3.5006588],\n",
       "       [3.5012615],\n",
       "       [3.500818 ],\n",
       "       [3.5006125],\n",
       "       [3.5009475],\n",
       "       [3.5009542],\n",
       "       [3.5009322],\n",
       "       [3.5006223],\n",
       "       [3.5009544],\n",
       "       [3.5010076],\n",
       "       [3.5013192],\n",
       "       [3.5008447],\n",
       "       [3.500869 ],\n",
       "       [3.5006466],\n",
       "       [3.5004802],\n",
       "       [3.5009263],\n",
       "       [3.5010858],\n",
       "       [3.5013487],\n",
       "       [3.5007281],\n",
       "       [3.5010884],\n",
       "       [3.501146 ],\n",
       "       [3.500616 ],\n",
       "       [3.501155 ],\n",
       "       [3.5009406],\n",
       "       [3.5005376],\n",
       "       [3.5012186],\n",
       "       [3.5004814],\n",
       "       [3.5008066],\n",
       "       [3.501181 ],\n",
       "       [3.501342 ],\n",
       "       [3.501161 ],\n",
       "       [3.5014608],\n",
       "       [3.5009103],\n",
       "       [3.5007455],\n",
       "       [3.5010192],\n",
       "       [3.5008898],\n",
       "       [3.5007071],\n",
       "       [3.5005057],\n",
       "       [3.500708 ],\n",
       "       [3.501192 ],\n",
       "       [3.5014014],\n",
       "       [3.5012639],\n",
       "       [3.5008535],\n",
       "       [3.5011563],\n",
       "       [3.5011768],\n",
       "       [3.5008824],\n",
       "       [3.5012746],\n",
       "       [3.501144 ],\n",
       "       [3.500766 ],\n",
       "       [3.5012999],\n",
       "       [3.5014417],\n",
       "       [3.5011594],\n",
       "       [3.5007792],\n",
       "       [3.5009267],\n",
       "       [3.501248 ],\n",
       "       [3.500798 ],\n",
       "       [3.5013018],\n",
       "       [3.5006547],\n",
       "       [3.5008225],\n",
       "       [3.5009503],\n",
       "       [3.500609 ],\n",
       "       [3.5010855],\n",
       "       [3.5007694],\n",
       "       [3.5014265],\n",
       "       [3.501176 ],\n",
       "       [3.5012567],\n",
       "       [3.5005257],\n",
       "       [3.5009944],\n",
       "       [3.5008633],\n",
       "       [3.5008113],\n",
       "       [3.5009708],\n",
       "       [3.5012498],\n",
       "       [3.5013885],\n",
       "       [3.5006828],\n",
       "       [3.5005083],\n",
       "       [3.5005753],\n",
       "       [3.50139  ],\n",
       "       [3.5012507],\n",
       "       [3.5008605],\n",
       "       [3.5011384],\n",
       "       [3.5012736],\n",
       "       [3.500875 ],\n",
       "       [3.5008602],\n",
       "       [3.501456 ],\n",
       "       [3.5009334],\n",
       "       [3.501251 ],\n",
       "       [3.5006423],\n",
       "       [3.5007443],\n",
       "       [3.5006666],\n",
       "       [3.5010128],\n",
       "       [3.5006845],\n",
       "       [3.5013316],\n",
       "       [3.5014248],\n",
       "       [3.5004985],\n",
       "       [3.501332 ],\n",
       "       [3.501449 ],\n",
       "       [3.5010011],\n",
       "       [3.5012035],\n",
       "       [3.5012593],\n",
       "       [3.500631 ],\n",
       "       [3.5008643],\n",
       "       [3.5010316],\n",
       "       [3.500677 ],\n",
       "       [3.5012877],\n",
       "       [3.5008929],\n",
       "       [3.5010405],\n",
       "       [3.5005627],\n",
       "       [3.5009995],\n",
       "       [3.5013547],\n",
       "       [3.5011082],\n",
       "       [3.500498 ],\n",
       "       [3.5009382],\n",
       "       [3.5012658],\n",
       "       [3.5005405],\n",
       "       [3.500631 ],\n",
       "       [3.5014024],\n",
       "       [3.501255 ],\n",
       "       [3.500552 ],\n",
       "       [3.5005162],\n",
       "       [3.5008783],\n",
       "       [3.5014162],\n",
       "       [3.500521 ],\n",
       "       [3.501096 ],\n",
       "       [3.500939 ],\n",
       "       [3.5006082],\n",
       "       [3.500639 ],\n",
       "       [3.5011885],\n",
       "       [3.5010245],\n",
       "       [3.5011165],\n",
       "       [3.5011742],\n",
       "       [3.5007024],\n",
       "       [3.5004687],\n",
       "       [3.501463 ],\n",
       "       [3.500503 ],\n",
       "       [3.5009122],\n",
       "       [3.5013187],\n",
       "       [3.5007381],\n",
       "       [3.5006664],\n",
       "       [3.5010197],\n",
       "       [3.5009043],\n",
       "       [3.500947 ],\n",
       "       [3.5011623],\n",
       "       [3.5011437],\n",
       "       [3.5007088],\n",
       "       [3.5008523],\n",
       "       [3.5013018],\n",
       "       [3.50065  ],\n",
       "       [3.5009708],\n",
       "       [3.5010033],\n",
       "       [3.5009348],\n",
       "       [3.5008793],\n",
       "       [3.5012572],\n",
       "       [3.5008388],\n",
       "       [3.5007207],\n",
       "       [3.5012279],\n",
       "       [3.5011234],\n",
       "       [3.5012722],\n",
       "       [3.5012622],\n",
       "       [3.500554 ],\n",
       "       [3.501109 ],\n",
       "       [3.500634 ],\n",
       "       [3.5011528],\n",
       "       [3.500554 ],\n",
       "       [3.5011063],\n",
       "       [3.5012786],\n",
       "       [3.5009043],\n",
       "       [3.5007393],\n",
       "       [3.500696 ],\n",
       "       [3.500935 ],\n",
       "       [3.5011985],\n",
       "       [3.5012658],\n",
       "       [3.5006695],\n",
       "       [3.500693 ],\n",
       "       [3.5013452],\n",
       "       [3.501419 ],\n",
       "       [3.500477 ],\n",
       "       [3.5008898],\n",
       "       [3.501254 ],\n",
       "       [3.5009558],\n",
       "       [3.5008078],\n",
       "       [3.5006907],\n",
       "       [3.5009892],\n",
       "       [3.50082  ],\n",
       "       [3.5007906],\n",
       "       [3.5014377],\n",
       "       [3.50095  ],\n",
       "       [3.5004668],\n",
       "       [3.5013003],\n",
       "       [3.5011215],\n",
       "       [3.5004752],\n",
       "       [3.5013375],\n",
       "       [3.5013924],\n",
       "       [3.5012028],\n",
       "       [3.5014074],\n",
       "       [3.5011704],\n",
       "       [3.5006826],\n",
       "       [3.5007567],\n",
       "       [3.500525 ],\n",
       "       [3.5010352],\n",
       "       [3.501183 ],\n",
       "       [3.5005789],\n",
       "       [3.5014133],\n",
       "       [3.5009725],\n",
       "       [3.5006628],\n",
       "       [3.500486 ],\n",
       "       [3.5008206],\n",
       "       [3.501159 ],\n",
       "       [3.500811 ],\n",
       "       [3.5013916],\n",
       "       [3.5005963],\n",
       "       [3.5005298],\n",
       "       [3.5012367],\n",
       "       [3.5013545],\n",
       "       [3.5013485],\n",
       "       [3.5009565],\n",
       "       [3.501026 ],\n",
       "       [3.5006669],\n",
       "       [3.5014179],\n",
       "       [3.500938 ],\n",
       "       [3.5009358],\n",
       "       [3.5006454],\n",
       "       [3.501174 ],\n",
       "       [3.5014   ],\n",
       "       [3.500674 ],\n",
       "       [3.5013206],\n",
       "       [3.5011303],\n",
       "       [3.5011075],\n",
       "       [3.500941 ],\n",
       "       [3.5008316],\n",
       "       [3.5010984],\n",
       "       [3.500717 ],\n",
       "       [3.5014293],\n",
       "       [3.50049  ],\n",
       "       [3.5007892],\n",
       "       [3.5013516],\n",
       "       [3.501141 ],\n",
       "       [3.5012279],\n",
       "       [3.5011272],\n",
       "       [3.5013885],\n",
       "       [3.5009854],\n",
       "       [3.501379 ],\n",
       "       [3.5008674],\n",
       "       [3.5005229],\n",
       "       [3.5013452],\n",
       "       [3.5007412],\n",
       "       [3.5009573],\n",
       "       [3.5010266],\n",
       "       [3.5009565],\n",
       "       [3.5007558],\n",
       "       [3.5011022],\n",
       "       [3.501008 ],\n",
       "       [3.501417 ],\n",
       "       [3.500689 ],\n",
       "       [3.5007396],\n",
       "       [3.500924 ],\n",
       "       [3.5011406],\n",
       "       [3.5014524],\n",
       "       [3.5004938],\n",
       "       [3.500591 ],\n",
       "       [3.5004861],\n",
       "       [3.5010421],\n",
       "       [3.5009172],\n",
       "       [3.5008829],\n",
       "       [3.5005085],\n",
       "       [3.5004659],\n",
       "       [3.5005116],\n",
       "       [3.500745 ],\n",
       "       [3.5009193],\n",
       "       [3.5007355],\n",
       "       [3.500548 ],\n",
       "       [3.5006714],\n",
       "       [3.5009856],\n",
       "       [3.5008812],\n",
       "       [3.5005593],\n",
       "       [3.5012152],\n",
       "       [3.5007024],\n",
       "       [3.5013924],\n",
       "       [3.5005586],\n",
       "       [3.5010042],\n",
       "       [3.5008798],\n",
       "       [3.5006754],\n",
       "       [3.5013354],\n",
       "       [3.5005548],\n",
       "       [3.5005453],\n",
       "       [3.5008454],\n",
       "       [3.5004914],\n",
       "       [3.501035 ],\n",
       "       [3.5005205],\n",
       "       [3.5004888],\n",
       "       [3.5008888],\n",
       "       [3.5012078],\n",
       "       [3.5007496],\n",
       "       [3.5013072],\n",
       "       [3.5010054],\n",
       "       [3.5006487],\n",
       "       [3.5013022],\n",
       "       [3.500661 ],\n",
       "       [3.5009217],\n",
       "       [3.5008621],\n",
       "       [3.5009377],\n",
       "       [3.5014627],\n",
       "       [3.5007818],\n",
       "       [3.500859 ],\n",
       "       [3.5011587],\n",
       "       [3.5005655],\n",
       "       [3.501004 ],\n",
       "       [3.501371 ],\n",
       "       [3.5006726],\n",
       "       [3.5012748],\n",
       "       [3.5006583],\n",
       "       [3.5009692],\n",
       "       [3.5013118],\n",
       "       [3.500963 ],\n",
       "       [3.5008674],\n",
       "       [3.5006404],\n",
       "       [3.5012484],\n",
       "       [3.5005596],\n",
       "       [3.5006297],\n",
       "       [3.5011418],\n",
       "       [3.5012274],\n",
       "       [3.5005758],\n",
       "       [3.5006087],\n",
       "       [3.5010102],\n",
       "       [3.5007613],\n",
       "       [3.500856 ],\n",
       "       [3.5012646],\n",
       "       [3.5012388],\n",
       "       [3.5006125],\n",
       "       [3.5012555],\n",
       "       [3.501179 ],\n",
       "       [3.5011873],\n",
       "       [3.5008533],\n",
       "       [3.5006504],\n",
       "       [3.5014029],\n",
       "       [3.5006046],\n",
       "       [3.5006635],\n",
       "       [3.5009706],\n",
       "       [3.5011766],\n",
       "       [3.500559 ],\n",
       "       [3.5005012],\n",
       "       [3.5014565],\n",
       "       [3.5005858],\n",
       "       [3.5006936],\n",
       "       [3.5011642],\n",
       "       [3.5010915],\n",
       "       [3.5010357],\n",
       "       [3.5009792],\n",
       "       [3.5009968],\n",
       "       [3.501135 ],\n",
       "       [3.500787 ],\n",
       "       [3.5004694],\n",
       "       [3.5005643],\n",
       "       [3.5012753],\n",
       "       [3.500721 ],\n",
       "       [3.500652 ],\n",
       "       [3.5010042],\n",
       "       [3.5005786],\n",
       "       [3.5005376],\n",
       "       [3.5012326],\n",
       "       [3.5011983],\n",
       "       [3.5012667],\n",
       "       [3.5005796],\n",
       "       [3.5005064],\n",
       "       [3.501357 ],\n",
       "       [3.5013711],\n",
       "       [3.5004916],\n",
       "       [3.5012465],\n",
       "       [3.500481 ],\n",
       "       [3.5014122],\n",
       "       [3.500854 ],\n",
       "       [3.5014403],\n",
       "       [3.5011616],\n",
       "       [3.500667 ],\n",
       "       [3.5009325],\n",
       "       [3.5012445],\n",
       "       [3.5014138],\n",
       "       [3.501254 ],\n",
       "       [3.5010638],\n",
       "       [3.501265 ],\n",
       "       [3.500556 ],\n",
       "       [3.5005233],\n",
       "       [3.5014422],\n",
       "       [3.5014188],\n",
       "       [3.5013938],\n",
       "       [3.5005898],\n",
       "       [3.5013263],\n",
       "       [3.5007846],\n",
       "       [3.501075 ],\n",
       "       [3.5012047],\n",
       "       [3.5006323],\n",
       "       [3.5005066],\n",
       "       [3.5013692],\n",
       "       [3.5010996],\n",
       "       [3.5013826],\n",
       "       [3.501161 ],\n",
       "       [3.500682 ],\n",
       "       [3.501022 ],\n",
       "       [3.500843 ],\n",
       "       [3.5012693],\n",
       "       [3.5013444],\n",
       "       [3.5006907],\n",
       "       [3.5005448],\n",
       "       [3.5013876],\n",
       "       [3.5011063],\n",
       "       [3.5012681],\n",
       "       [3.5012121],\n",
       "       [3.5006595],\n",
       "       [3.5014484],\n",
       "       [3.501063 ],\n",
       "       [3.5012777],\n",
       "       [3.5006974],\n",
       "       [3.500835 ],\n",
       "       [3.5012338],\n",
       "       [3.501085 ],\n",
       "       [3.501101 ],\n",
       "       [3.5007892],\n",
       "       [3.501438 ],\n",
       "       [3.5011911],\n",
       "       [3.500933 ],\n",
       "       [3.5007627],\n",
       "       [3.5007882],\n",
       "       [3.5006142],\n",
       "       [3.5007706],\n",
       "       [3.5009453],\n",
       "       [3.5008988],\n",
       "       [3.5009675],\n",
       "       [3.5011654],\n",
       "       [3.5006933],\n",
       "       [3.5012765],\n",
       "       [3.5008605],\n",
       "       [3.5013568],\n",
       "       [3.501117 ],\n",
       "       [3.5010207],\n",
       "       [3.5011127],\n",
       "       [3.501131 ],\n",
       "       [3.5006468],\n",
       "       [3.5012841],\n",
       "       [3.501343 ],\n",
       "       [3.5007825],\n",
       "       [3.5005682],\n",
       "       [3.5010343],\n",
       "       [3.500957 ],\n",
       "       [3.5010607],\n",
       "       [3.5007956],\n",
       "       [3.5012314],\n",
       "       [3.5007262],\n",
       "       [3.5009046],\n",
       "       [3.5006094],\n",
       "       [3.501233 ],\n",
       "       [3.501452 ],\n",
       "       [3.50056  ],\n",
       "       [3.5005908],\n",
       "       [3.5005717],\n",
       "       [3.5013986],\n",
       "       [3.501433 ],\n",
       "       [3.5010722],\n",
       "       [3.5010216],\n",
       "       [3.5011497],\n",
       "       [3.5012832],\n",
       "       [3.5013328],\n",
       "       [3.501404 ],\n",
       "       [3.5012069],\n",
       "       [3.501014 ],\n",
       "       [3.5011854],\n",
       "       [3.5012538],\n",
       "       [3.5012336],\n",
       "       [3.501042 ],\n",
       "       [3.5004978],\n",
       "       [3.501252 ],\n",
       "       [3.50063  ],\n",
       "       [3.5006032],\n",
       "       [3.5010507],\n",
       "       [3.500994 ],\n",
       "       [3.501272 ],\n",
       "       [3.5013943],\n",
       "       [3.5007424],\n",
       "       [3.5012739],\n",
       "       [3.500794 ],\n",
       "       [3.5013742],\n",
       "       [3.5009832],\n",
       "       [3.5009816],\n",
       "       [3.5005343],\n",
       "       [3.5008311],\n",
       "       [3.500468 ],\n",
       "       [3.5013707],\n",
       "       [3.5008912],\n",
       "       [3.5012026],\n",
       "       [3.5012307],\n",
       "       [3.5007756],\n",
       "       [3.5005233],\n",
       "       [3.5006735],\n",
       "       [3.5008385],\n",
       "       [3.5005434],\n",
       "       [3.5009854],\n",
       "       [3.5012665],\n",
       "       [3.5009947],\n",
       "       [3.5008008],\n",
       "       [3.5011656],\n",
       "       [3.500897 ],\n",
       "       [3.5004816],\n",
       "       [3.501444 ],\n",
       "       [3.5005429],\n",
       "       [3.5010529],\n",
       "       [3.5010302],\n",
       "       [3.5008123],\n",
       "       [3.5012045],\n",
       "       [3.501326 ],\n",
       "       [3.500937 ],\n",
       "       [3.5009098],\n",
       "       [3.5006845],\n",
       "       [3.5010512],\n",
       "       [3.5008628],\n",
       "       [3.5014594],\n",
       "       [3.5005698],\n",
       "       [3.501443 ],\n",
       "       [3.500777 ],\n",
       "       [3.5014496],\n",
       "       [3.5009072],\n",
       "       [3.5007014],\n",
       "       [3.500559 ],\n",
       "       [3.5011423],\n",
       "       [3.5009408],\n",
       "       [3.5009773],\n",
       "       [3.501095 ],\n",
       "       [3.5005395],\n",
       "       [3.5008988],\n",
       "       [3.501116 ],\n",
       "       [3.500862 ],\n",
       "       [3.500905 ],\n",
       "       [3.5012853],\n",
       "       [3.5013962],\n",
       "       [3.5013795],\n",
       "       [3.50084  ],\n",
       "       [3.5011   ],\n",
       "       [3.5005598],\n",
       "       [3.500911 ],\n",
       "       [3.5005379],\n",
       "       [3.5004685],\n",
       "       [3.501188 ],\n",
       "       [3.5008368],\n",
       "       [3.5014086],\n",
       "       [3.5013885],\n",
       "       [3.5011678],\n",
       "       [3.5006328],\n",
       "       [3.5012207],\n",
       "       [3.5009274],\n",
       "       [3.5012097],\n",
       "       [3.5007622],\n",
       "       [3.5005033],\n",
       "       [3.5005825],\n",
       "       [3.500693 ],\n",
       "       [3.5007484],\n",
       "       [3.5007777],\n",
       "       [3.5007184],\n",
       "       [3.500953 ],\n",
       "       [3.5008488],\n",
       "       [3.5014615],\n",
       "       [3.5013793],\n",
       "       [3.5012798],\n",
       "       [3.5008633],\n",
       "       [3.5007472],\n",
       "       [3.5011444],\n",
       "       [3.5014644],\n",
       "       [3.5010488],\n",
       "       [3.5005004],\n",
       "       [3.501269 ],\n",
       "       [3.501186 ],\n",
       "       [3.5008318],\n",
       "       [3.5010567],\n",
       "       [3.500826 ],\n",
       "       [3.5014627],\n",
       "       [3.5012643],\n",
       "       [3.5011272],\n",
       "       [3.5012765],\n",
       "       [3.5014336],\n",
       "       [3.5011585],\n",
       "       [3.5008981],\n",
       "       [3.5011895],\n",
       "       [3.500906 ],\n",
       "       [3.5006948],\n",
       "       [3.5012376],\n",
       "       [3.5007463],\n",
       "       [3.501333 ],\n",
       "       [3.5008976],\n",
       "       [3.5004663],\n",
       "       [3.5013983],\n",
       "       [3.501015 ],\n",
       "       [3.5010285],\n",
       "       [3.5009053],\n",
       "       [3.5008032],\n",
       "       [3.5012891],\n",
       "       [3.501126 ],\n",
       "       [3.5006917],\n",
       "       [3.500508 ],\n",
       "       [3.5008855],\n",
       "       [3.5008388],\n",
       "       [3.500815 ],\n",
       "       [3.5008402],\n",
       "       [3.500786 ],\n",
       "       [3.5006561],\n",
       "       [3.5007164],\n",
       "       [3.5013103],\n",
       "       [3.5011659],\n",
       "       [3.5008373],\n",
       "       [3.5006764],\n",
       "       [3.5009754],\n",
       "       [3.5006602],\n",
       "       [3.5006106],\n",
       "       [3.5006816],\n",
       "       [3.5009563],\n",
       "       [3.5004926],\n",
       "       [3.5014248],\n",
       "       [3.5006254],\n",
       "       [3.5014575],\n",
       "       [3.501155 ],\n",
       "       [3.5005784],\n",
       "       [3.5009713],\n",
       "       [3.5012054],\n",
       "       [3.5011768],\n",
       "       [3.5013318],\n",
       "       [3.5008035],\n",
       "       [3.5005128],\n",
       "       [3.5005524],\n",
       "       [3.5005567],\n",
       "       [3.5013344],\n",
       "       [3.5014284],\n",
       "       [3.501446 ],\n",
       "       [3.5010068],\n",
       "       [3.5006769],\n",
       "       [3.5009193],\n",
       "       [3.5010712],\n",
       "       [3.5008678],\n",
       "       [3.5008655],\n",
       "       [3.500664 ],\n",
       "       [3.5011504],\n",
       "       [3.5007808],\n",
       "       [3.501351 ],\n",
       "       [3.5011008],\n",
       "       [3.50144  ],\n",
       "       [3.5009997],\n",
       "       [3.5004687],\n",
       "       [3.5007324],\n",
       "       [3.5009713],\n",
       "       [3.5009015],\n",
       "       [3.5007026],\n",
       "       [3.5010333],\n",
       "       [3.5008118],\n",
       "       [3.5008736],\n",
       "       [3.5012953],\n",
       "       [3.5012825],\n",
       "       [3.5007021],\n",
       "       [3.5008986],\n",
       "       [3.501386 ],\n",
       "       [3.5005367],\n",
       "       [3.5010407],\n",
       "       [3.5007772],\n",
       "       [3.5006454],\n",
       "       [3.5005748],\n",
       "       [3.5008738],\n",
       "       [3.5012026],\n",
       "       [3.5011668],\n",
       "       [3.5005727],\n",
       "       [3.5014484],\n",
       "       [3.5009928],\n",
       "       [3.5005398],\n",
       "       [3.5007358],\n",
       "       [3.5009074],\n",
       "       [3.500688 ],\n",
       "       [3.50058  ],\n",
       "       [3.500709 ],\n",
       "       [3.500738 ],\n",
       "       [3.5011196],\n",
       "       [3.5010457],\n",
       "       [3.5012996],\n",
       "       [3.5011039],\n",
       "       [3.5005767],\n",
       "       [3.50061  ],\n",
       "       [3.5009387],\n",
       "       [3.5012016],\n",
       "       [3.5013673],\n",
       "       [3.5012276],\n",
       "       [3.5011582],\n",
       "       [3.5008712],\n",
       "       [3.501259 ],\n",
       "       [3.501195 ],\n",
       "       [3.5009556],\n",
       "       [3.5007374],\n",
       "       [3.5009522],\n",
       "       [3.5005243],\n",
       "       [3.5007164],\n",
       "       [3.500552 ],\n",
       "       [3.501095 ],\n",
       "       [3.5009727],\n",
       "       [3.5006502],\n",
       "       [3.5014644],\n",
       "       [3.5013463],\n",
       "       [3.5006504],\n",
       "       [3.501092 ],\n",
       "       [3.500839 ],\n",
       "       [3.5013592],\n",
       "       [3.5009632],\n",
       "       [3.501313 ],\n",
       "       [3.5009115],\n",
       "       [3.5007975],\n",
       "       [3.5006974],\n",
       "       [3.5014083],\n",
       "       [3.5010116],\n",
       "       [3.5008752],\n",
       "       [3.5012124],\n",
       "       [3.501126 ],\n",
       "       [3.5010705],\n",
       "       [3.5010445],\n",
       "       [3.5013235],\n",
       "       [3.5007222],\n",
       "       [3.500713 ],\n",
       "       [3.5012507],\n",
       "       [3.501025 ],\n",
       "       [3.5012538],\n",
       "       [3.5005848],\n",
       "       [3.5008855],\n",
       "       [3.500822 ],\n",
       "       [3.5005665],\n",
       "       [3.5008917],\n",
       "       [3.501248 ],\n",
       "       [3.5008898],\n",
       "       [3.5011163],\n",
       "       [3.5009704],\n",
       "       [3.500929 ],\n",
       "       [3.5010903],\n",
       "       [3.5012476],\n",
       "       [3.5010438],\n",
       "       [3.5013723],\n",
       "       [3.5014222],\n",
       "       [3.5008817],\n",
       "       [3.5007672],\n",
       "       [3.5006502],\n",
       "       [3.5006454],\n",
       "       [3.5012941],\n",
       "       [3.501183 ],\n",
       "       [3.50058  ],\n",
       "       [3.5011065],\n",
       "       [3.5010452],\n",
       "       [3.5012429],\n",
       "       [3.5014136],\n",
       "       [3.500949 ],\n",
       "       [3.501019 ],\n",
       "       [3.5007133],\n",
       "       [3.5006297],\n",
       "       [3.5004983],\n",
       "       [3.5011067],\n",
       "       [3.5007067],\n",
       "       [3.5011082],\n",
       "       [3.5011113],\n",
       "       [3.500782 ],\n",
       "       [3.5007474],\n",
       "       [3.5004961],\n",
       "       [3.5005746],\n",
       "       [3.5012336],\n",
       "       [3.50077  ],\n",
       "       [3.5011814],\n",
       "       [3.5010986],\n",
       "       [3.5007246],\n",
       "       [3.5010953],\n",
       "       [3.5011635],\n",
       "       [3.501143 ],\n",
       "       [3.500503 ],\n",
       "       [3.50144  ],\n",
       "       [3.5009394],\n",
       "       [3.5008845],\n",
       "       [3.50113  ],\n",
       "       [3.501081 ],\n",
       "       [3.501306 ],\n",
       "       [3.5004745],\n",
       "       [3.5005672],\n",
       "       [3.5009878],\n",
       "       [3.5011215],\n",
       "       [3.5008192],\n",
       "       [3.5009334],\n",
       "       [3.5011513],\n",
       "       [3.5013254],\n",
       "       [3.500927 ],\n",
       "       [3.5008073],\n",
       "       [3.5005617],\n",
       "       [3.5008373],\n",
       "       [3.5006473],\n",
       "       [3.500694 ],\n",
       "       [3.5013127],\n",
       "       [3.5005069],\n",
       "       [3.5008025],\n",
       "       [3.5006983],\n",
       "       [3.5011091],\n",
       "       [3.5006323],\n",
       "       [3.5009973],\n",
       "       [3.5007215],\n",
       "       [3.5012114],\n",
       "       [3.5006776],\n",
       "       [3.5008857],\n",
       "       [3.5014226],\n",
       "       [3.500949 ],\n",
       "       [3.5012264],\n",
       "       [3.5008247],\n",
       "       [3.5009844],\n",
       "       [3.5013037],\n",
       "       [3.5007222],\n",
       "       [3.5005074],\n",
       "       [3.500637 ],\n",
       "       [3.5010996],\n",
       "       [3.5008612],\n",
       "       [3.500717 ],\n",
       "       [3.500886 ],\n",
       "       [3.5012279],\n",
       "       [3.5012722],\n",
       "       [3.5005424],\n",
       "       [3.5009496],\n",
       "       [3.5014226],\n",
       "       [3.5011892],\n",
       "       [3.5004687],\n",
       "       [3.5009382],\n",
       "       [3.5006943],\n",
       "       [3.5005496],\n",
       "       [3.5012038],\n",
       "       [3.50073  ],\n",
       "       [3.5008287],\n",
       "       [3.500573 ],\n",
       "       [3.500603 ],\n",
       "       [3.5014095],\n",
       "       [3.50135  ],\n",
       "       [3.5006583],\n",
       "       [3.501254 ],\n",
       "       [3.50132  ],\n",
       "       [3.5005488]], dtype=float32)"
      ]
     },
     "execution_count": 9,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "x[\"rts\"]"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 9,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "array([[-0.38223141]])"
      ]
     },
     "execution_count": 9,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "import numpy as np\n",
    "\n",
    "np.random.uniform(low=-1 / 2, high=1 / 2, size=(x[\"rts\"] > 0).shape)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 11,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "array([], dtype=float64)"
      ]
     },
     "execution_count": 11,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "import numpy as np\n",
    "\n",
    "np.random.uniform(size=x[\"rts\"][x[\"rts\"] < 0].shape)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 13,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "(0,)"
      ]
     },
     "execution_count": 13,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "(x[\"rts\"][x[\"rts\"] < 0]).shape"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 41,
   "metadata": {},
   "outputs": [],
   "source": [
    "import numpy as np\n",
    "\n",
    "x = ssms.basic_simulators.simulator.simulator(\n",
    "    model=\"ddm\",\n",
    "    theta=[0.5, 1.5, 0.5, 0.5],\n",
    "    n_samples=2,\n",
    "    no_noise=False,\n",
    "    smooth_unif=False,\n",
    ")"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 45,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "{'rts': array([[3.5009649]], dtype=float32),\n",
       " 'choices': array([[1]], dtype=int32),\n",
       " 'metadata': {'v': array([0.5], dtype=float32),\n",
       "  'a': array([1.5], dtype=float32),\n",
       "  'z': array([0.5], dtype=float32),\n",
       "  't': array([0.5], dtype=float32),\n",
       "  's': 0.0,\n",
       "  'delta_t': 0.0010000000474974513,\n",
       "  'max_t': 20.0,\n",
       "  'n_samples': 1,\n",
       "  'simulator': 'ddm_flexbound',\n",
       "  'boundary_fun_type': 'constant',\n",
       "  'possible_choices': [-1, 1],\n",
       "  'trajectory': array([[ 0.00e+00],\n",
       "         [ 5.00e-04],\n",
       "         [ 1.00e-03],\n",
       "         ...,\n",
       "         [-9.99e+02],\n",
       "         [-9.99e+02],\n",
       "         [-9.99e+02]], dtype=float32),\n",
       "  'boundary': array([1.5, 1.5, 1.5, ..., 1.5, 1.5, 1.5], dtype=float32),\n",
       "  'model': 'ddm'}}"
      ]
     },
     "execution_count": 45,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "x"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": [
    "# np.array([[0.5, 1.5, 0.5, 0.5],[0.5, 1.5, 0.5, 0.5]]"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 3,
   "metadata": {},
   "outputs": [],
   "source": [
    "x[\"rts\"][x[\"rts\"] < 0] = x[\"rts\"][x[\"rts\"] < 0] + 1"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 4,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "array([], dtype=float32)"
      ]
     },
     "execution_count": 4,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "x[\"rts\"][x[\"rts\"] < 0]"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 15,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Help on function simulator in module ssms.basic_simulators.simulator:\n",
      "\n",
      "simulator(theta, model='angle', n_samples=1000, delta_t=0.001, max_t=20, no_noise=False, bin_dim=None, bin_pointwise=False, smooth_unif=True, random_state=None)\n",
      "    Basic data simulator for the models included in HDDM.\n",
      "    \n",
      "    Arguments\n",
      "    ---------\n",
      "        theta : list, numpy.array, dict or pd.DataFrame\n",
      "            Parameters of the simulator. If 2d array, each row is treated as a 'trial'\n",
      "            and the function runs n_sample * n_trials simulations.\n",
      "        model: str <default='angle'>\n",
      "            Determines the model that will be simulated.\n",
      "        n_samples: int <default=1000>\n",
      "            Number of simulation runs for each row in the theta argument.\n",
      "        delta_t: float\n",
      "            Size fo timesteps in simulator (conceptually measured in seconds)\n",
      "        max_t: float\n",
      "            Maximum reaction the simulator can reach\n",
      "        no_noise: bool <default=False>\n",
      "            Turn noise of (useful for plotting purposes mostly)\n",
      "        bin_dim: int <default=None>\n",
      "            Number of bins to use (in case the simulator output is\n",
      "            supposed to come out as a count histogram)\n",
      "        bin_pointwise: bool <default=False>\n",
      "            Wheter or not to bin the output data pointwise.\n",
      "            If true the 'RT' part of the data is now specifies the\n",
      "            'bin-number' of a given trial instead of the 'RT' directly.\n",
      "            You need to specify bin_dim as some number for this to work.\n",
      "        random_state: int <default=None>\n",
      "            Integer passed to random_seed function in the simulator.\n",
      "            Can be used for reproducibility.\n",
      "    \n",
      "    Return\n",
      "    ------\n",
      "    dictionary where keys\n",
      "        can be (rts, responses, metadata)\n",
      "        or     (rt-response histogram, metadata)\n",
      "        or     (rts binned pointwise, responses, metadata)\n",
      "\n"
     ]
    }
   ],
   "source": [
    "help(ssms.basic_simulators.simulator.simulator)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 4,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "array([[0.        ],\n",
       "       [0.0005    ],\n",
       "       [0.001     ],\n",
       "       [0.0015    ],\n",
       "       [0.002     ],\n",
       "       [0.0025    ],\n",
       "       [0.003     ],\n",
       "       [0.0035    ],\n",
       "       [0.004     ],\n",
       "       [0.0045    ],\n",
       "       [0.005     ],\n",
       "       [0.0055    ],\n",
       "       [0.006     ],\n",
       "       [0.0065    ],\n",
       "       [0.007     ],\n",
       "       [0.0075    ],\n",
       "       [0.008     ],\n",
       "       [0.0085    ],\n",
       "       [0.009     ],\n",
       "       [0.0095    ],\n",
       "       [0.01      ],\n",
       "       [0.0105    ],\n",
       "       [0.011     ],\n",
       "       [0.0115    ],\n",
       "       [0.012     ],\n",
       "       [0.0125    ],\n",
       "       [0.013     ],\n",
       "       [0.0135    ],\n",
       "       [0.014     ],\n",
       "       [0.0145    ],\n",
       "       [0.015     ],\n",
       "       [0.0155    ],\n",
       "       [0.016     ],\n",
       "       [0.0165    ],\n",
       "       [0.017     ],\n",
       "       [0.0175    ],\n",
       "       [0.018     ],\n",
       "       [0.0185    ],\n",
       "       [0.019     ],\n",
       "       [0.01949999],\n",
       "       [0.01999999],\n",
       "       [0.02049999],\n",
       "       [0.02099999],\n",
       "       [0.02149999],\n",
       "       [0.02199999],\n",
       "       [0.02249999],\n",
       "       [0.02299999],\n",
       "       [0.02349999],\n",
       "       [0.02399999],\n",
       "       [0.02449999],\n",
       "       [0.02499999],\n",
       "       [0.02549998],\n",
       "       [0.02599998],\n",
       "       [0.02649998],\n",
       "       [0.02699998],\n",
       "       [0.02749998],\n",
       "       [0.02799998],\n",
       "       [0.02849998],\n",
       "       [0.02899998],\n",
       "       [0.02949998],\n",
       "       [0.02999998],\n",
       "       [0.03049998],\n",
       "       [0.03099998],\n",
       "       [0.03149997],\n",
       "       [0.03199998],\n",
       "       [0.03249998],\n",
       "       [0.03299998],\n",
       "       [0.03349998],\n",
       "       [0.03399998],\n",
       "       [0.03449998],\n",
       "       [0.03499998],\n",
       "       [0.03549998],\n",
       "       [0.03599998],\n",
       "       [0.03649998],\n",
       "       [0.03699999],\n",
       "       [0.03749999],\n",
       "       [0.03799999],\n",
       "       [0.03849999],\n",
       "       [0.03899999],\n",
       "       [0.03949999],\n",
       "       [0.03999999],\n",
       "       [0.04049999],\n",
       "       [0.04099999],\n",
       "       [0.04149999],\n",
       "       [0.042     ],\n",
       "       [0.0425    ],\n",
       "       [0.043     ],\n",
       "       [0.0435    ],\n",
       "       [0.044     ],\n",
       "       [0.0445    ],\n",
       "       [0.045     ],\n",
       "       [0.0455    ],\n",
       "       [0.046     ],\n",
       "       [0.0465    ],\n",
       "       [0.04700001],\n",
       "       [0.04750001],\n",
       "       [0.04800001],\n",
       "       [0.04850001],\n",
       "       [0.04900001],\n",
       "       [0.04950001]], dtype=float32)"
      ]
     },
     "execution_count": 4,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "x[\"metadata\"][\"trajectory\"][:100]"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 9,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "(array([244., 203., 103.,  72.,  30.,  19.,  11.,   4.,   1.,   3.]),\n",
       " array([0.54799998, 0.82429785, 1.10059571, 1.37689352, 1.65319145,\n",
       "        1.92948937, 2.20578718, 2.48208499, 2.7583828 , 3.03468084,\n",
       "        3.31097865]),\n",
       " <BarContainer object of 10 artists>)"
      ]
     },
     "execution_count": 9,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "image/png": "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",
      "text/plain": [
       "<Figure size 640x480 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "import numpy as np\n",
    "\n",
    "plt.hist(np.squeeze(x[\"rts\"][x[\"choices\"] == 1]))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 4,
   "metadata": {},
   "outputs": [
    {
     "ename": "AttributeError",
     "evalue": "module 'ssms.basic_simulators' has no attribute 'simulator'",
     "output_type": "error",
     "traceback": [
      "\u001b[0;31m---------------------------------------------------------------------------\u001b[0m",
      "\u001b[0;31mAttributeError\u001b[0m                            Traceback (most recent call last)",
      "\u001b[1;32m/Users/afengler/Library/CloudStorage/OneDrive-Personal/proj_ssm_simulators/ssm-simulators/notebooks/essential_tests.ipynb Cell 3\u001b[0m line \u001b[0;36m1\n\u001b[0;32m----> <a href='vscode-notebook-cell:/Users/afengler/Library/CloudStorage/OneDrive-Personal/proj_ssm_simulators/ssm-simulators/notebooks/essential_tests.ipynb#W2sZmlsZQ%3D%3D?line=0'>1</a>\u001b[0m ssms\u001b[39m.\u001b[39;49mbasic_simulators\u001b[39m.\u001b[39;49msimulator\n",
      "\u001b[0;31mAttributeError\u001b[0m: module 'ssms.basic_simulators' has no attribute 'simulator'"
     ]
    }
   ],
   "source": [
    "ssms.basic_simulators.simulator"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 54,
   "metadata": {},
   "outputs": [],
   "source": [
    "test = {\n",
    "    \"a\": np.zeros(100),\n",
    "    \"b\": np.zeros((1, 100)),\n",
    "    \"c\": np.zeros((1, 100)),\n",
    "    \"d\": [1.0],\n",
    "    \"e\": 1.0,\n",
    "}\n",
    "\n",
    "\n",
    "def _make_valid_dict(dict_in):\n",
    "    collect_lengths = []\n",
    "    for key, value in dict_in.items():\n",
    "        if type(value) == list:\n",
    "            dict_in[key] = np.array(value).astype(np.float32)\n",
    "        if type(value) == int or type(value) == float:\n",
    "            dict_in[key] = np.array([value]).astype(np.float32)\n",
    "\n",
    "        dict_in[key] = np.squeeze(dict_in[key])\n",
    "\n",
    "        if dict_in[key].ndim > 1:\n",
    "            raise ValueError(\"Dimension of {} is greater than 1\".format(key))\n",
    "\n",
    "        elif dict_in[key].ndim > 0:\n",
    "            collect_lengths.append(dict_in[key].shape[0])\n",
    "\n",
    "    if len(set(collect_lengths)) > 1:\n",
    "        raise ValueError(\n",
    "            \"thetas have to be either scalars or same length for \"\n",
    "            \"all thetas which are not scalars\"\n",
    "        )\n",
    "\n",
    "    # If there were any thetas provided as vectors (and they had the same length),\n",
    "    # tile all scalar thetas to that length\n",
    "    if len(set(collect_lengths)) > 0:\n",
    "        for key, value in dict_in.items():\n",
    "            if value.ndim == 0:\n",
    "                dict_in[key] = np.tile(value, collect_lengths[0])\n",
    "    else:\n",
    "        for key, value in dict_in.items():\n",
    "            if value.ndim == 0:\n",
    "                dict_in[key] = np.expand_dims(value, axis=0)\n",
    "    return dict_in\n",
    "\n",
    "\n",
    "def _theta_dict_to_array(theta=dict(), model_param_list=None):\n",
    "    \"\"\"Converts theta dictionary to numpy array for use with simulator function\"\"\"\n",
    "    if model_param_list is None:\n",
    "        raise ValueError(\"model_param_list is not supplied\")\n",
    "\n",
    "    return np.stack([theta[param] for param in model_param_list], axis=1)\n",
    "\n",
    "\n",
    "def _theta_array_to_dict(theta=None, model_param_list=None):\n",
    "    \"\"\"Converts theta array to dictionary for use with simulator function\"\"\"\n",
    "    if model_param_list is None:\n",
    "        raise ValueError(\"model_param_list is not supplied\")\n",
    "    elif theta is None:\n",
    "        raise ValueError(\"theta array is not supplied\")\n",
    "    elif theta.ndim == 1 and len(model_param_list) != theta.shape[0]:\n",
    "        raise ValueError(\n",
    "            \"model_param_list and theta array do not imply the same number of parameters\"\n",
    "        )\n",
    "    elif theta.ndim == 2 and len(model_param_list) != theta.shape[1]:\n",
    "        raise ValueError(\n",
    "            \"model_param_list and theta array do not imply the same number of parameters\"\n",
    "        )\n",
    "    else:\n",
    "        if theta.ndim == 1:\n",
    "            theta = np.expand_dims(theta, axis=0)\n",
    "        return {param: theta[:, i] for i, param in enumerate(model_param_list)}\n",
    "\n",
    "\n",
    "test_dict = _make_valid_dict(test)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 64,
   "metadata": {},
   "outputs": [],
   "source": [
    "test = {\n",
    "    \"a\": np.zeros(100),\n",
    "    \"b\": np.zeros((1, 100)),\n",
    "    \"c\": np.zeros((1, 100)),\n",
    "    \"d\": [1.0],\n",
    "    \"e\": 1.0,\n",
    "}\n",
    "\n",
    "test_all_scalars = {\"a\": [1.0], \"b\": 2.0, \"c\": [3.0], \"d\": 4.0, \"e\": 1.0}\n",
    "\n",
    "test_dict_all_scalar = _make_valid_dict(test_all_scalars)\n",
    "test_array = _theta_dict_to_array(test_dict_all_scalar, [\"a\", \"b\", \"c\", \"d\", \"e\"])"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 65,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "{'a': array([1.], dtype=float32),\n",
       " 'b': array([2.], dtype=float32),\n",
       " 'c': array([3.], dtype=float32),\n",
       " 'd': array([4.], dtype=float32),\n",
       " 'e': array([1.], dtype=float32)}"
      ]
     },
     "execution_count": 65,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "test_dict_all_scalar"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 68,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "(1,)"
      ]
     },
     "execution_count": 68,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "test_dict_all_scalar[\"a\"]"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 62,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "array([[1., 2., 3., 4., 1.],\n",
       "       [2., 2., 4., 4., 1.]], dtype=float32)"
      ]
     },
     "execution_count": 62,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "test_array"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 51,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "{'a': array(1., dtype=float32),\n",
       " 'b': array(2., dtype=float32),\n",
       " 'c': array(3., dtype=float32),\n",
       " 'd': array(4., dtype=float32),\n",
       " 'e': array(1., dtype=float32)}"
      ]
     },
     "execution_count": 51,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "test_dict_all_scalar"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 49,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "array([[0., 0., 0., 1., 1.],\n",
       "       [0., 0., 0., 1., 1.],\n",
       "       [0., 0., 0., 1., 1.],\n",
       "       [0., 0., 0., 1., 1.],\n",
       "       [0., 0., 0., 1., 1.],\n",
       "       [0., 0., 0., 1., 1.],\n",
       "       [0., 0., 0., 1., 1.],\n",
       "       [0., 0., 0., 1., 1.],\n",
       "       [0., 0., 0., 1., 1.],\n",
       "       [0., 0., 0., 1., 1.],\n",
       "       [0., 0., 0., 1., 1.],\n",
       "       [0., 0., 0., 1., 1.],\n",
       "       [0., 0., 0., 1., 1.],\n",
       "       [0., 0., 0., 1., 1.],\n",
       "       [0., 0., 0., 1., 1.],\n",
       "       [0., 0., 0., 1., 1.],\n",
       "       [0., 0., 0., 1., 1.],\n",
       "       [0., 0., 0., 1., 1.],\n",
       "       [0., 0., 0., 1., 1.],\n",
       "       [0., 0., 0., 1., 1.],\n",
       "       [0., 0., 0., 1., 1.],\n",
       "       [0., 0., 0., 1., 1.],\n",
       "       [0., 0., 0., 1., 1.],\n",
       "       [0., 0., 0., 1., 1.],\n",
       "       [0., 0., 0., 1., 1.],\n",
       "       [0., 0., 0., 1., 1.],\n",
       "       [0., 0., 0., 1., 1.],\n",
       "       [0., 0., 0., 1., 1.],\n",
       "       [0., 0., 0., 1., 1.],\n",
       "       [0., 0., 0., 1., 1.],\n",
       "       [0., 0., 0., 1., 1.],\n",
       "       [0., 0., 0., 1., 1.],\n",
       "       [0., 0., 0., 1., 1.],\n",
       "       [0., 0., 0., 1., 1.],\n",
       "       [0., 0., 0., 1., 1.],\n",
       "       [0., 0., 0., 1., 1.],\n",
       "       [0., 0., 0., 1., 1.],\n",
       "       [0., 0., 0., 1., 1.],\n",
       "       [0., 0., 0., 1., 1.],\n",
       "       [0., 0., 0., 1., 1.],\n",
       "       [0., 0., 0., 1., 1.],\n",
       "       [0., 0., 0., 1., 1.],\n",
       "       [0., 0., 0., 1., 1.],\n",
       "       [0., 0., 0., 1., 1.],\n",
       "       [0., 0., 0., 1., 1.],\n",
       "       [0., 0., 0., 1., 1.],\n",
       "       [0., 0., 0., 1., 1.],\n",
       "       [0., 0., 0., 1., 1.],\n",
       "       [0., 0., 0., 1., 1.],\n",
       "       [0., 0., 0., 1., 1.],\n",
       "       [0., 0., 0., 1., 1.],\n",
       "       [0., 0., 0., 1., 1.],\n",
       "       [0., 0., 0., 1., 1.],\n",
       "       [0., 0., 0., 1., 1.],\n",
       "       [0., 0., 0., 1., 1.],\n",
       "       [0., 0., 0., 1., 1.],\n",
       "       [0., 0., 0., 1., 1.],\n",
       "       [0., 0., 0., 1., 1.],\n",
       "       [0., 0., 0., 1., 1.],\n",
       "       [0., 0., 0., 1., 1.],\n",
       "       [0., 0., 0., 1., 1.],\n",
       "       [0., 0., 0., 1., 1.],\n",
       "       [0., 0., 0., 1., 1.],\n",
       "       [0., 0., 0., 1., 1.],\n",
       "       [0., 0., 0., 1., 1.],\n",
       "       [0., 0., 0., 1., 1.],\n",
       "       [0., 0., 0., 1., 1.],\n",
       "       [0., 0., 0., 1., 1.],\n",
       "       [0., 0., 0., 1., 1.],\n",
       "       [0., 0., 0., 1., 1.],\n",
       "       [0., 0., 0., 1., 1.],\n",
       "       [0., 0., 0., 1., 1.],\n",
       "       [0., 0., 0., 1., 1.],\n",
       "       [0., 0., 0., 1., 1.],\n",
       "       [0., 0., 0., 1., 1.],\n",
       "       [0., 0., 0., 1., 1.],\n",
       "       [0., 0., 0., 1., 1.],\n",
       "       [0., 0., 0., 1., 1.],\n",
       "       [0., 0., 0., 1., 1.],\n",
       "       [0., 0., 0., 1., 1.],\n",
       "       [0., 0., 0., 1., 1.],\n",
       "       [0., 0., 0., 1., 1.],\n",
       "       [0., 0., 0., 1., 1.],\n",
       "       [0., 0., 0., 1., 1.],\n",
       "       [0., 0., 0., 1., 1.],\n",
       "       [0., 0., 0., 1., 1.],\n",
       "       [0., 0., 0., 1., 1.],\n",
       "       [0., 0., 0., 1., 1.],\n",
       "       [0., 0., 0., 1., 1.],\n",
       "       [0., 0., 0., 1., 1.],\n",
       "       [0., 0., 0., 1., 1.],\n",
       "       [0., 0., 0., 1., 1.],\n",
       "       [0., 0., 0., 1., 1.],\n",
       "       [0., 0., 0., 1., 1.],\n",
       "       [0., 0., 0., 1., 1.],\n",
       "       [0., 0., 0., 1., 1.],\n",
       "       [0., 0., 0., 1., 1.],\n",
       "       [0., 0., 0., 1., 1.],\n",
       "       [0., 0., 0., 1., 1.],\n",
       "       [0., 0., 0., 1., 1.]])"
      ]
     },
     "execution_count": 49,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "test_array"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 44,
   "metadata": {},
   "outputs": [],
   "source": [
    "model_param_list = [\"a\", \"b\", \"c\", \"d\", \"e\"]\n",
    "test_array = np.zeros((1, 5))\n",
    "\n",
    "test_dict_2 = _theta_array_to_dict(test_array, model_param_list)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 45,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "{'a': array([0.]),\n",
       " 'b': array([0.]),\n",
       " 'c': array([0.]),\n",
       " 'd': array([0.]),\n",
       " 'e': array([0.])}"
      ]
     },
     "execution_count": 45,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "test_dict_2"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 29,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "{'a': array([0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,\n",
       "        0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,\n",
       "        0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,\n",
       "        0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,\n",
       "        0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,\n",
       "        0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.]),\n",
       " 'b': array([0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,\n",
       "        0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,\n",
       "        0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,\n",
       "        0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,\n",
       "        0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,\n",
       "        0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.]),\n",
       " 'c': array([0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,\n",
       "        0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,\n",
       "        0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,\n",
       "        0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,\n",
       "        0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,\n",
       "        0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.]),\n",
       " 'd': array([1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1.,\n",
       "        1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1.,\n",
       "        1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1.,\n",
       "        1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1.,\n",
       "        1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1.,\n",
       "        1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1.],\n",
       "       dtype=float32),\n",
       " 'e': array([1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1.,\n",
       "        1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1.,\n",
       "        1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1.,\n",
       "        1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1.,\n",
       "        1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1.,\n",
       "        1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1.],\n",
       "       dtype=float32)}"
      ]
     },
     "execution_count": 29,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "test_np"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": []
  },
  {
   "cell_type": "code",
   "execution_count": 2,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "array([0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,\n",
       "       0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,\n",
       "       0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,\n",
       "       0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,\n",
       "       0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,\n",
       "       0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.])"
      ]
     },
     "execution_count": 2,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "import numpy as np\n",
    "\n",
    "np.array(np.zeros(100))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 18,
   "metadata": {},
   "outputs": [],
   "source": [
    "### Check if simulator works with different types of inputs now\n",
    "import ssms\n",
    "from ssms.config.config import model_config\n",
    "import numpy as np\n",
    "from copy import deepcopy\n",
    "\n",
    "# if key == \"weibull_cdf\" or key == \"ddm_seq2_weibull_no_bias\" \\\n",
    "#                     or key == \"ddm_par2_weibull_no_bias\" \\\n",
    "#                         or key == \"ddm_mic2_adj_weibull_no_bias\" \\\n",
    "#                             or key == \"tradeoff_weibull_no_bias\":\n",
    "#                     print(sim_input_data[key][subkey])\n",
    "\n",
    "\n",
    "model = \"weibull_cdf\"\n",
    "model_param_list = ssms.config.config.model_config[model][\"params\"]\n",
    "theta_dict_all_scalars = {\n",
    "    param: np.mean(\n",
    "        [\n",
    "            model_config[model][\"param_bounds\"][0][i],\n",
    "            model_config[model][\"param_bounds\"][1][i],\n",
    "        ]\n",
    "    )\n",
    "    for i, param in enumerate(model_param_list)\n",
    "}\n",
    "theta_dict_all_vectors = {\n",
    "    param: np.tile(\n",
    "        np.mean(\n",
    "            [\n",
    "                model_config[model][\"param_bounds\"][0][i],\n",
    "                model_config[model][\"param_bounds\"][1][i],\n",
    "            ]\n",
    "        ),\n",
    "        100,\n",
    "    )\n",
    "    for i, param in enumerate(model_param_list)\n",
    "}\n",
    "\n",
    "# theta_dict_all_vectors_random = {param: np.tile(n)}\n",
    "\n",
    "theta_dict_sca_vec = deepcopy(theta_dict_all_vectors)\n",
    "\n",
    "cnt = 0\n",
    "for tmp_key in theta_dict_all_scalars.keys():\n",
    "    theta_dict_sca_vec[tmp_key] = theta_dict_all_scalars[tmp_key]\n",
    "    if cnt > 0:\n",
    "        break\n",
    "    cnt += 1\n",
    "\n",
    "theta_dict_uneven = deepcopy(theta_dict_all_vectors)\n",
    "\n",
    "cnt = 0\n",
    "for tmp_key in theta_dict_all_scalars.keys():\n",
    "    if cnt > 0:\n",
    "        break\n",
    "    theta_dict_uneven[tmp_key] = np.concatenate(\n",
    "        [theta_dict_all_vectors[tmp_key], np.zeros(2)]\n",
    "    )\n",
    "    cnt += 1\n",
    "\n",
    "in_dict = {\n",
    "    \"theta_dict_all_scalars\": theta_dict_all_scalars,\n",
    "    \"theta_dict_all_vectors\": theta_dict_all_vectors,\n",
    "    \"theta_dict_sca_vec\": theta_dict_sca_vec,\n",
    "    \"theta_dict_uneven\": theta_dict_uneven,\n",
    "}"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 19,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "{'v': array([0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,\n",
       "        0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,\n",
       "        0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,\n",
       "        0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,\n",
       "        0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,\n",
       "        0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.]),\n",
       " 'a': array([1.4, 1.4, 1.4, 1.4, 1.4, 1.4, 1.4, 1.4, 1.4, 1.4, 1.4, 1.4, 1.4,\n",
       "        1.4, 1.4, 1.4, 1.4, 1.4, 1.4, 1.4, 1.4, 1.4, 1.4, 1.4, 1.4, 1.4,\n",
       "        1.4, 1.4, 1.4, 1.4, 1.4, 1.4, 1.4, 1.4, 1.4, 1.4, 1.4, 1.4, 1.4,\n",
       "        1.4, 1.4, 1.4, 1.4, 1.4, 1.4, 1.4, 1.4, 1.4, 1.4, 1.4, 1.4, 1.4,\n",
       "        1.4, 1.4, 1.4, 1.4, 1.4, 1.4, 1.4, 1.4, 1.4, 1.4, 1.4, 1.4, 1.4,\n",
       "        1.4, 1.4, 1.4, 1.4, 1.4, 1.4, 1.4, 1.4, 1.4, 1.4, 1.4, 1.4, 1.4,\n",
       "        1.4, 1.4, 1.4, 1.4, 1.4, 1.4, 1.4, 1.4, 1.4, 1.4, 1.4, 1.4, 1.4,\n",
       "        1.4, 1.4, 1.4, 1.4, 1.4, 1.4, 1.4, 1.4, 1.4]),\n",
       " 'z': array([0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5,\n",
       "        0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5,\n",
       "        0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5,\n",
       "        0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5,\n",
       "        0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5,\n",
       "        0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5,\n",
       "        0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5,\n",
       "        0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5]),\n",
       " 't': array([1.0005, 1.0005, 1.0005, 1.0005, 1.0005, 1.0005, 1.0005, 1.0005,\n",
       "        1.0005, 1.0005, 1.0005, 1.0005, 1.0005, 1.0005, 1.0005, 1.0005,\n",
       "        1.0005, 1.0005, 1.0005, 1.0005, 1.0005, 1.0005, 1.0005, 1.0005,\n",
       "        1.0005, 1.0005, 1.0005, 1.0005, 1.0005, 1.0005, 1.0005, 1.0005,\n",
       "        1.0005, 1.0005, 1.0005, 1.0005, 1.0005, 1.0005, 1.0005, 1.0005,\n",
       "        1.0005, 1.0005, 1.0005, 1.0005, 1.0005, 1.0005, 1.0005, 1.0005,\n",
       "        1.0005, 1.0005, 1.0005, 1.0005, 1.0005, 1.0005, 1.0005, 1.0005,\n",
       "        1.0005, 1.0005, 1.0005, 1.0005, 1.0005, 1.0005, 1.0005, 1.0005,\n",
       "        1.0005, 1.0005, 1.0005, 1.0005, 1.0005, 1.0005, 1.0005, 1.0005,\n",
       "        1.0005, 1.0005, 1.0005, 1.0005, 1.0005, 1.0005, 1.0005, 1.0005,\n",
       "        1.0005, 1.0005, 1.0005, 1.0005, 1.0005, 1.0005, 1.0005, 1.0005,\n",
       "        1.0005, 1.0005, 1.0005, 1.0005, 1.0005, 1.0005, 1.0005, 1.0005,\n",
       "        1.0005, 1.0005, 1.0005, 1.0005]),\n",
       " 'alpha': array([2.65, 2.65, 2.65, 2.65, 2.65, 2.65, 2.65, 2.65, 2.65, 2.65, 2.65,\n",
       "        2.65, 2.65, 2.65, 2.65, 2.65, 2.65, 2.65, 2.65, 2.65, 2.65, 2.65,\n",
       "        2.65, 2.65, 2.65, 2.65, 2.65, 2.65, 2.65, 2.65, 2.65, 2.65, 2.65,\n",
       "        2.65, 2.65, 2.65, 2.65, 2.65, 2.65, 2.65, 2.65, 2.65, 2.65, 2.65,\n",
       "        2.65, 2.65, 2.65, 2.65, 2.65, 2.65, 2.65, 2.65, 2.65, 2.65, 2.65,\n",
       "        2.65, 2.65, 2.65, 2.65, 2.65, 2.65, 2.65, 2.65, 2.65, 2.65, 2.65,\n",
       "        2.65, 2.65, 2.65, 2.65, 2.65, 2.65, 2.65, 2.65, 2.65, 2.65, 2.65,\n",
       "        2.65, 2.65, 2.65, 2.65, 2.65, 2.65, 2.65, 2.65, 2.65, 2.65, 2.65,\n",
       "        2.65, 2.65, 2.65, 2.65, 2.65, 2.65, 2.65, 2.65, 2.65, 2.65, 2.65,\n",
       "        2.65]),\n",
       " 'beta': array([3.65, 3.65, 3.65, 3.65, 3.65, 3.65, 3.65, 3.65, 3.65, 3.65, 3.65,\n",
       "        3.65, 3.65, 3.65, 3.65, 3.65, 3.65, 3.65, 3.65, 3.65, 3.65, 3.65,\n",
       "        3.65, 3.65, 3.65, 3.65, 3.65, 3.65, 3.65, 3.65, 3.65, 3.65, 3.65,\n",
       "        3.65, 3.65, 3.65, 3.65, 3.65, 3.65, 3.65, 3.65, 3.65, 3.65, 3.65,\n",
       "        3.65, 3.65, 3.65, 3.65, 3.65, 3.65, 3.65, 3.65, 3.65, 3.65, 3.65,\n",
       "        3.65, 3.65, 3.65, 3.65, 3.65, 3.65, 3.65, 3.65, 3.65, 3.65, 3.65,\n",
       "        3.65, 3.65, 3.65, 3.65, 3.65, 3.65, 3.65, 3.65, 3.65, 3.65, 3.65,\n",
       "        3.65, 3.65, 3.65, 3.65, 3.65, 3.65, 3.65, 3.65, 3.65, 3.65, 3.65,\n",
       "        3.65, 3.65, 3.65, 3.65, 3.65, 3.65, 3.65, 3.65, 3.65, 3.65, 3.65,\n",
       "        3.65])}"
      ]
     },
     "execution_count": 19,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "theta_dict_uneven"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 20,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "theta_dict_all_scalars\n",
      "theta_dict_all_vectors\n",
      "theta_dict_sca_vec\n",
      "theta_dict_uneven\n"
     ]
    },
    {
     "ename": "ValueError",
     "evalue": "thetas have to be either scalars or same length for all thetas which are not scalars",
     "output_type": "error",
     "traceback": [
      "\u001b[0;31m---------------------------------------------------------------------------\u001b[0m",
      "\u001b[0;31mValueError\u001b[0m                                Traceback (most recent call last)",
      "\u001b[1;32m/Users/afengler/Library/CloudStorage/OneDrive-Personal/proj_ssm_simulators/ssm-simulators/notebooks/essential_tests.ipynb Cell 18\u001b[0m line \u001b[0;36m4\n\u001b[1;32m      <a href='vscode-notebook-cell:/Users/afengler/Library/CloudStorage/OneDrive-Personal/proj_ssm_simulators/ssm-simulators/notebooks/essential_tests.ipynb#X31sZmlsZQ%3D%3D?line=1'>2</a>\u001b[0m \u001b[39mfor\u001b[39;00m key \u001b[39min\u001b[39;00m in_dict\u001b[39m.\u001b[39mkeys():\n\u001b[1;32m      <a href='vscode-notebook-cell:/Users/afengler/Library/CloudStorage/OneDrive-Personal/proj_ssm_simulators/ssm-simulators/notebooks/essential_tests.ipynb#X31sZmlsZQ%3D%3D?line=2'>3</a>\u001b[0m     \u001b[39mprint\u001b[39m(key)\n\u001b[0;32m----> <a href='vscode-notebook-cell:/Users/afengler/Library/CloudStorage/OneDrive-Personal/proj_ssm_simulators/ssm-simulators/notebooks/essential_tests.ipynb#X31sZmlsZQ%3D%3D?line=3'>4</a>\u001b[0m     out \u001b[39m=\u001b[39m simulator(theta \u001b[39m=\u001b[39;49m in_dict[key], model \u001b[39m=\u001b[39;49m model, n_samples \u001b[39m=\u001b[39;49m \u001b[39m10\u001b[39;49m)\n",
      "File \u001b[0;32m~/Library/CloudStorage/OneDrive-Personal/proj_ssm_simulators/ssm-simulators/ssms/basic_simulators/simulator.py:308\u001b[0m, in \u001b[0;36msimulator\u001b[0;34m(theta, model, n_samples, delta_t, max_t, no_noise, bin_dim, bin_pointwise, random_state)\u001b[0m\n\u001b[1;32m    306\u001b[0m     theta \u001b[39m=\u001b[39m theta\u001b[39m.\u001b[39mastype(np\u001b[39m.\u001b[39mfloat32)\n\u001b[1;32m    307\u001b[0m \u001b[39melif\u001b[39;00m \u001b[39misinstance\u001b[39m(theta, \u001b[39mdict\u001b[39m):\n\u001b[0;32m--> 308\u001b[0m     theta \u001b[39m=\u001b[39m _make_valid_dict(deepcopy(theta))\n\u001b[1;32m    309\u001b[0m \u001b[39melse\u001b[39;00m:\n\u001b[1;32m    310\u001b[0m     \u001b[39mtry\u001b[39;00m: \n",
      "File \u001b[0;32m~/Library/CloudStorage/OneDrive-Personal/proj_ssm_simulators/ssm-simulators/ssms/basic_simulators/simulator.py:49\u001b[0m, in \u001b[0;36m_make_valid_dict\u001b[0;34m(dict_in)\u001b[0m\n\u001b[1;32m     46\u001b[0m         collect_lengths\u001b[39m.\u001b[39mappend(dict_in[key]\u001b[39m.\u001b[39mshape[\u001b[39m0\u001b[39m]) \u001b[39m# add vector parameters to list\u001b[39;00m\n\u001b[1;32m     48\u001b[0m \u001b[39mif\u001b[39;00m \u001b[39mlen\u001b[39m(\u001b[39mset\u001b[39m(collect_lengths)) \u001b[39m>\u001b[39m \u001b[39m1\u001b[39m:\n\u001b[0;32m---> 49\u001b[0m     \u001b[39mraise\u001b[39;00m \u001b[39mValueError\u001b[39;00m(\u001b[39m'\u001b[39m\u001b[39mthetas have to be either scalars or same length for \u001b[39m\u001b[39m'\u001b[39m \\\n\u001b[1;32m     50\u001b[0m                      \u001b[39m'\u001b[39m\u001b[39mall thetas which are not scalars\u001b[39m\u001b[39m'\u001b[39m)\n\u001b[1;32m     52\u001b[0m \u001b[39m# If there were any thetas provided as vectors (and they had the same length),\u001b[39;00m\n\u001b[1;32m     53\u001b[0m \u001b[39m# tile all scalar thetas to that length\u001b[39;00m\n\u001b[1;32m     54\u001b[0m \u001b[39mif\u001b[39;00m \u001b[39mlen\u001b[39m(\u001b[39mset\u001b[39m(collect_lengths)) \u001b[39m>\u001b[39m \u001b[39m0\u001b[39m:\n",
      "\u001b[0;31mValueError\u001b[0m: thetas have to be either scalars or same length for all thetas which are not scalars"
     ]
    }
   ],
   "source": [
    "from ssms.basic_simulators.simulator import simulator\n",
    "\n",
    "for key in in_dict.keys():\n",
    "    print(key)\n",
    "    out = simulator(theta=in_dict[key], model=model, n_samples=10)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 12,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "dict_keys(['v', 'a', 'z', 't', 's', 'alpha', 'beta', 'delta_t', 'max_t', 'n_samples', 'simulator', 'boundary_fun_type', 'possible_choices', 'trajectory', 'boundary', 'model'])"
      ]
     },
     "execution_count": 12,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "out[\"metadata\"].keys()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 14,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "array([3.65, 3.65, 3.65, 3.65, 3.65, 3.65, 3.65, 3.65, 3.65, 3.65, 3.65,\n",
       "       3.65, 3.65, 3.65, 3.65, 3.65, 3.65, 3.65, 3.65, 3.65, 3.65, 3.65,\n",
       "       3.65, 3.65, 3.65, 3.65, 3.65, 3.65, 3.65, 3.65, 3.65, 3.65, 3.65,\n",
       "       3.65, 3.65, 3.65, 3.65, 3.65, 3.65, 3.65, 3.65, 3.65, 3.65, 3.65,\n",
       "       3.65, 3.65, 3.65, 3.65, 3.65, 3.65, 3.65, 3.65, 3.65, 3.65, 3.65,\n",
       "       3.65, 3.65, 3.65, 3.65, 3.65, 3.65, 3.65, 3.65, 3.65, 3.65, 3.65,\n",
       "       3.65, 3.65, 3.65, 3.65, 3.65, 3.65, 3.65, 3.65, 3.65, 3.65, 3.65,\n",
       "       3.65, 3.65, 3.65, 3.65, 3.65, 3.65, 3.65, 3.65, 3.65, 3.65, 3.65,\n",
       "       3.65, 3.65, 3.65, 3.65, 3.65, 3.65, 3.65, 3.65, 3.65, 3.65, 3.65,\n",
       "       3.65, 0.  , 0.  ], dtype=float32)"
      ]
     },
     "execution_count": 14,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "out[\"metadata\"][\"beta\"]"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 3,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "{'v': 0.0, 'a': 1.4, 'z': 0.5, 't': 1.0005, 'alpha': 2.65, 'beta': 3.65}"
      ]
     },
     "execution_count": 3,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "in_dict[key]"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 9,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "True\n"
     ]
    }
   ],
   "source": [
    "import ssms\n",
    "from ssms.basic_simulators.simulator import simulator\n",
    "import numpy as np\n",
    "import pandas as pd\n",
    "\n",
    "test = [1, 2, 3, 4]\n",
    "test = pd.DataFrame([test], columns=[\"v\", \"a\", \"z\", \"t\"])\n",
    "# test = pd.DataFrame(np.zeros((100,4)), columns= ['v', 'a', 'z', 't'])\n",
    "print(isinstance(test, pd.DataFrame))\n",
    "model = \"ddm\"\n",
    "out = simulator(test.to_dict(\"list\"), model=model, n_samples=10)\n",
    "\n",
    "# out = simulator(theta_dict_all_vectors,\n",
    "#           model = model,\n",
    "#           n_samples = 10)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 19,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "(100, 4)"
      ]
     },
     "execution_count": 19,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "test = [1, 2, 3, 4]\n",
    "np.tile(np.array(test), (100, 1)).shape"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 4,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "{'v': array([0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,\n",
       "        0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,\n",
       "        0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,\n",
       "        0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,\n",
       "        0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,\n",
       "        0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.],\n",
       "       dtype=float32),\n",
       " 'a': array([0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,\n",
       "        0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,\n",
       "        0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,\n",
       "        0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,\n",
       "        0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,\n",
       "        0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.],\n",
       "       dtype=float32),\n",
       " 'z': array([0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,\n",
       "        0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,\n",
       "        0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,\n",
       "        0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,\n",
       "        0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,\n",
       "        0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.],\n",
       "       dtype=float32),\n",
       " 't': array([0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,\n",
       "        0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,\n",
       "        0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,\n",
       "        0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,\n",
       "        0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,\n",
       "        0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.],\n",
       "       dtype=float32),\n",
       " 's': 1.0,\n",
       " 'delta_t': 0.0010000000474974513,\n",
       " 'max_t': 20.0,\n",
       " 'n_samples': 10,\n",
       " 'simulator': 'ddm',\n",
       " 'boundary_fun_type': 'constant',\n",
       " 'possible_choices': [-1, 1],\n",
       " 'trajectory': array([[ 0.0000000e+00],\n",
       "        [-1.3992155e-02],\n",
       "        [-9.9900000e+02],\n",
       "        ...,\n",
       "        [-9.9900000e+02],\n",
       "        [-9.9900000e+02],\n",
       "        [-9.9900000e+02]], dtype=float32),\n",
       " 'model': 'ddm'}"
      ]
     },
     "execution_count": 4,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "out[\"metadata\"]"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 11,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "{'v': array([0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,\n",
       "        0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,\n",
       "        0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,\n",
       "        0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,\n",
       "        0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,\n",
       "        0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.],\n",
       "       dtype=float32),\n",
       " 'a': array([1.65, 1.65, 1.65, 1.65, 1.65, 1.65, 1.65, 1.65, 1.65, 1.65, 1.65,\n",
       "        1.65, 1.65, 1.65, 1.65, 1.65, 1.65, 1.65, 1.65, 1.65, 1.65, 1.65,\n",
       "        1.65, 1.65, 1.65, 1.65, 1.65, 1.65, 1.65, 1.65, 1.65, 1.65, 1.65,\n",
       "        1.65, 1.65, 1.65, 1.65, 1.65, 1.65, 1.65, 1.65, 1.65, 1.65, 1.65,\n",
       "        1.65, 1.65, 1.65, 1.65, 1.65, 1.65, 1.65, 1.65, 1.65, 1.65, 1.65,\n",
       "        1.65, 1.65, 1.65, 1.65, 1.65, 1.65, 1.65, 1.65, 1.65, 1.65, 1.65,\n",
       "        1.65, 1.65, 1.65, 1.65, 1.65, 1.65, 1.65, 1.65, 1.65, 1.65, 1.65,\n",
       "        1.65, 1.65, 1.65, 1.65, 1.65, 1.65, 1.65, 1.65, 1.65, 1.65, 1.65,\n",
       "        1.65, 1.65, 1.65, 1.65, 1.65, 1.65, 1.65, 1.65, 1.65, 1.65, 1.65,\n",
       "        1.65], dtype=float32),\n",
       " 'z': array([0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5,\n",
       "        0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5,\n",
       "        0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5,\n",
       "        0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5,\n",
       "        0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5,\n",
       "        0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5,\n",
       "        0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5,\n",
       "        0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5], dtype=float32),\n",
       " 't': array([1.0005, 1.0005, 1.0005, 1.0005, 1.0005, 1.0005, 1.0005, 1.0005,\n",
       "        1.0005, 1.0005, 1.0005, 1.0005, 1.0005, 1.0005, 1.0005, 1.0005,\n",
       "        1.0005, 1.0005, 1.0005, 1.0005, 1.0005, 1.0005, 1.0005, 1.0005,\n",
       "        1.0005, 1.0005, 1.0005, 1.0005, 1.0005, 1.0005, 1.0005, 1.0005,\n",
       "        1.0005, 1.0005, 1.0005, 1.0005, 1.0005, 1.0005, 1.0005, 1.0005,\n",
       "        1.0005, 1.0005, 1.0005, 1.0005, 1.0005, 1.0005, 1.0005, 1.0005,\n",
       "        1.0005, 1.0005, 1.0005, 1.0005, 1.0005, 1.0005, 1.0005, 1.0005,\n",
       "        1.0005, 1.0005, 1.0005, 1.0005, 1.0005, 1.0005, 1.0005, 1.0005,\n",
       "        1.0005, 1.0005, 1.0005, 1.0005, 1.0005, 1.0005, 1.0005, 1.0005,\n",
       "        1.0005, 1.0005, 1.0005, 1.0005, 1.0005, 1.0005, 1.0005, 1.0005,\n",
       "        1.0005, 1.0005, 1.0005, 1.0005, 1.0005, 1.0005, 1.0005, 1.0005,\n",
       "        1.0005, 1.0005, 1.0005, 1.0005, 1.0005, 1.0005, 1.0005, 1.0005,\n",
       "        1.0005, 1.0005, 1.0005, 1.0005], dtype=float32),\n",
       " 's': 1.0,\n",
       " 'theta': array([0.6, 0.6, 0.6, 0.6, 0.6, 0.6, 0.6, 0.6, 0.6, 0.6, 0.6, 0.6, 0.6,\n",
       "        0.6, 0.6, 0.6, 0.6, 0.6, 0.6, 0.6, 0.6, 0.6, 0.6, 0.6, 0.6, 0.6,\n",
       "        0.6, 0.6, 0.6, 0.6, 0.6, 0.6, 0.6, 0.6, 0.6, 0.6, 0.6, 0.6, 0.6,\n",
       "        0.6, 0.6, 0.6, 0.6, 0.6, 0.6, 0.6, 0.6, 0.6, 0.6, 0.6, 0.6, 0.6,\n",
       "        0.6, 0.6, 0.6, 0.6, 0.6, 0.6, 0.6, 0.6, 0.6, 0.6, 0.6, 0.6, 0.6,\n",
       "        0.6, 0.6, 0.6, 0.6, 0.6, 0.6, 0.6, 0.6, 0.6, 0.6, 0.6, 0.6, 0.6,\n",
       "        0.6, 0.6, 0.6, 0.6, 0.6, 0.6, 0.6, 0.6, 0.6, 0.6, 0.6, 0.6, 0.6,\n",
       "        0.6, 0.6, 0.6, 0.6, 0.6, 0.6, 0.6, 0.6, 0.6], dtype=float32),\n",
       " 'delta_t': 0.0010000000474974513,\n",
       " 'max_t': 20.0,\n",
       " 'n_samples': 10,\n",
       " 'simulator': 'ddm_flexbound',\n",
       " 'boundary_fun_type': 'angle',\n",
       " 'possible_choices': [-1, 1],\n",
       " 'trajectory': array([[ 0.0000000e+00],\n",
       "        [ 2.2308147e-02],\n",
       "        [ 4.7882609e-03],\n",
       "        ...,\n",
       "        [-9.9900000e+02],\n",
       "        [-9.9900000e+02],\n",
       "        [-9.9900000e+02]], dtype=float32),\n",
       " 'boundary': array([  1.65     ,   1.6493158,   1.6486317, ..., -12.031369 ,\n",
       "        -12.032053 , -12.032737 ], dtype=float32),\n",
       " 'model': 'angle'}"
      ]
     },
     "execution_count": 11,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "out[\"metadata\"][\"v\"]"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 10,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "array([0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,\n",
       "       0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,\n",
       "       0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,\n",
       "       0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,\n",
       "       0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,\n",
       "       0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,\n",
       "       0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,\n",
       "       0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,\n",
       "       0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,\n",
       "       0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,\n",
       "       0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,\n",
       "       0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.])"
      ]
     },
     "execution_count": 10,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "np.concatenate([np.zeros(100), np.zeros(100)])"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 6,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "{'name': 'angle',\n",
       " 'params': ['v', 'a', 'z', 't', 'theta'],\n",
       " 'param_bounds': [[-3.0, 0.3, 0.1, 0.001, -0.1], [3.0, 3.0, 0.9, 2.0, 1.3]],\n",
       " 'boundary': <function ssms.basic_simulators.boundary_functions.angle(t=1, theta=1)>,\n",
       " 'n_params': 5,\n",
       " 'default_params': [0.0, 1.0, 0.5, 0.001, 0.0],\n",
       " 'hddm_include': ['z', 'theta'],\n",
       " 'nchoices': 2}"
      ]
     },
     "execution_count": 6,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "model_param_list"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 4,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "{'ddm': {'name': 'ddm',\n",
       "  'params': ['v', 'a', 'z', 't'],\n",
       "  'param_bounds': [[-3.0, 0.3, 0.1, 0.0], [3.0, 2.5, 0.9, 2.0]],\n",
       "  'boundary': <function ssms.basic_simulators.boundary_functions.constant(t=0)>,\n",
       "  'n_params': 4,\n",
       "  'default_params': [0.0, 1.0, 0.5, 0.001],\n",
       "  'hddm_include': ['z'],\n",
       "  'nchoices': 2},\n",
       " 'ddm_legacy': {'name': 'ddm_legacy',\n",
       "  'params': ['v', 'a', 'z', 't'],\n",
       "  'param_bounds': [[-3.0, 0.3, 0.1, 0.0], [3.0, 2.5, 0.9, 2.0]],\n",
       "  'boundary': <function ssms.basic_simulators.boundary_functions.constant(t=0)>,\n",
       "  'n_params': 4,\n",
       "  'default_params': [0.0, 1.0, 0.5, 0.001],\n",
       "  'hddm_include': ['z'],\n",
       "  'nchoices': 2},\n",
       " 'ddm_deadline': {'name': 'ddm_deadline',\n",
       "  'params': ['v', 'a', 'z', 't', 'deadline'],\n",
       "  'param_bounds': [[-3.0, 0.3, 0.1, 0.0, 0.1], [3.0, 2.5, 0.9, 2.0, 5.0]],\n",
       "  'boundary': <function ssms.basic_simulators.boundary_functions.constant(t=0)>,\n",
       "  'n_params': 5,\n",
       "  'default_params': [0.0, 1.0, 0.5, 0.001, 5.0],\n",
       "  'hddm_include': ['z', 'deadline'],\n",
       "  'nchoices': 2},\n",
       " 'angle': {'name': 'angle',\n",
       "  'params': ['v', 'a', 'z', 't', 'theta'],\n",
       "  'param_bounds': [[-3.0, 0.3, 0.1, 0.001, -0.1], [3.0, 3.0, 0.9, 2.0, 1.3]],\n",
       "  'boundary': <function ssms.basic_simulators.boundary_functions.angle(t=1, theta=1)>,\n",
       "  'n_params': 5,\n",
       "  'default_params': [0.0, 1.0, 0.5, 0.001, 0.0],\n",
       "  'hddm_include': ['z', 'theta'],\n",
       "  'nchoices': 2},\n",
       " 'weibull': {'name': 'weibull',\n",
       "  'params': ['v', 'a', 'z', 't', 'alpha', 'beta'],\n",
       "  'param_bounds': [[-2.5, 0.3, 0.2, 0.001, 0.31, 0.31],\n",
       "   [2.5, 2.5, 0.8, 2.0, 4.99, 6.99]],\n",
       "  'boundary': <function ssms.basic_simulators.boundary_functions.weibull_cdf(t=1, alpha=1, beta=1)>,\n",
       "  'n_params': 6,\n",
       "  'default_params': [0.0, 1.0, 0.5, 0.001, 3.0, 3.0],\n",
       "  'hddm_include': ['z', 'alpha', 'beta'],\n",
       "  'nchoices': 2},\n",
       " 'levy': {'name': 'levy',\n",
       "  'params': ['v', 'a', 'z', 'alpha', 't'],\n",
       "  'param_bounds': [[-3.0, 0.3, 0.1, 1.0, 0.001], [3.0, 3.0, 0.9, 2.0, 2]],\n",
       "  'boundary': <function ssms.basic_simulators.boundary_functions.constant(t=0)>,\n",
       "  'n_params': 5,\n",
       "  'default_params': [0.0, 1.0, 0.5, 1.5, 0.1],\n",
       "  'hddm_include': ['z', 'alpha'],\n",
       "  'nchoices': 2},\n",
       " 'levy_angle': {'name': 'levy_angle',\n",
       "  'params': ['v', 'a', 'z', 'alpha', 't', 'theta'],\n",
       "  'param_bounds': [[-3.0, 0.3, 0.1, 1.0, 0.001, -0.1],\n",
       "   [3.0, 3.0, 0.9, 2.0, 2, 1.3]],\n",
       "  'boundary': <function ssms.basic_simulators.boundary_functions.angle(t=1, theta=1)>,\n",
       "  'n_params': 6,\n",
       "  'default_params': [0.0, 1.0, 0.5, 1.5, 0.1, 0.01],\n",
       "  'hddm_include': ['z', 'alpha', 'theta'],\n",
       "  'nchoices': 2},\n",
       " 'full_ddm': {'name': 'full_ddm',\n",
       "  'params': ['v', 'a', 'z', 't', 'sz', 'sv', 'st'],\n",
       "  'param_bounds': [[-3.0, 0.3, 0.3, 0.25, 0.001, 0.001, 0.001],\n",
       "   [3.0, 2.5, 0.7, 2.25, 0.2, 2.0, 0.25]],\n",
       "  'boundary': <function ssms.basic_simulators.boundary_functions.constant(t=0)>,\n",
       "  'n_params': 7,\n",
       "  'default_params': [0.0, 1.0, 0.5, 0.25, 0.001, 0.001, 0.001],\n",
       "  'hddm_include': ['z', 'st', 'sv', 'sz'],\n",
       "  'nchoices': 2},\n",
       " 'gamma_drift': {'name': 'gamma_drift',\n",
       "  'params': ['v', 'a', 'z', 't', 'shape', 'scale', 'c'],\n",
       "  'param_bounds': [[-3.0, 0.3, 0.1, 0.001, 2.0, 0.01, -3.0],\n",
       "   [3.0, 3.0, 0.9, 2.0, 10.0, 1.0, 3.0]],\n",
       "  'boundary': <function ssms.basic_simulators.boundary_functions.constant(t=0)>,\n",
       "  'drift_fun': <function ssms.basic_simulators.drift_functions.gamma_drift(t=array([ 0. ,  0.1,  0.2,  0.3,  0.4,  0.5,  0.6,  0.7,  0.8,  0.9,  1. ,\n",
       "        1.1,  1.2,  1.3,  1.4,  1.5,  1.6,  1.7,  1.8,  1.9,  2. ,  2.1,\n",
       "        2.2,  2.3,  2.4,  2.5,  2.6,  2.7,  2.8,  2.9,  3. ,  3.1,  3.2,\n",
       "        3.3,  3.4,  3.5,  3.6,  3.7,  3.8,  3.9,  4. ,  4.1,  4.2,  4.3,\n",
       "        4.4,  4.5,  4.6,  4.7,  4.8,  4.9,  5. ,  5.1,  5.2,  5.3,  5.4,\n",
       "        5.5,  5.6,  5.7,  5.8,  5.9,  6. ,  6.1,  6.2,  6.3,  6.4,  6.5,\n",
       "        6.6,  6.7,  6.8,  6.9,  7. ,  7.1,  7.2,  7.3,  7.4,  7.5,  7.6,\n",
       "        7.7,  7.8,  7.9,  8. ,  8.1,  8.2,  8.3,  8.4,  8.5,  8.6,  8.7,\n",
       "        8.8,  8.9,  9. ,  9.1,  9.2,  9.3,  9.4,  9.5,  9.6,  9.7,  9.8,\n",
       "        9.9, 10. , 10.1, 10.2, 10.3, 10.4, 10.5, 10.6, 10.7, 10.8, 10.9,\n",
       "       11. , 11.1, 11.2, 11.3, 11.4, 11.5, 11.6, 11.7, 11.8, 11.9, 12. ,\n",
       "       12.1, 12.2, 12.3, 12.4, 12.5, 12.6, 12.7, 12.8, 12.9, 13. , 13.1,\n",
       "       13.2, 13.3, 13.4, 13.5, 13.6, 13.7, 13.8, 13.9, 14. , 14.1, 14.2,\n",
       "       14.3, 14.4, 14.5, 14.6, 14.7, 14.8, 14.9, 15. , 15.1, 15.2, 15.3,\n",
       "       15.4, 15.5, 15.6, 15.7, 15.8, 15.9, 16. , 16.1, 16.2, 16.3, 16.4,\n",
       "       16.5, 16.6, 16.7, 16.8, 16.9, 17. , 17.1, 17.2, 17.3, 17.4, 17.5,\n",
       "       17.6, 17.7, 17.8, 17.9, 18. , 18.1, 18.2, 18.3, 18.4, 18.5, 18.6,\n",
       "       18.7, 18.8, 18.9, 19. , 19.1, 19.2, 19.3, 19.4, 19.5, 19.6, 19.7,\n",
       "       19.8, 19.9]), shape=2, scale=0.01, c=1.5)>,\n",
       "  'n_params': 7,\n",
       "  'default_params': [0.0, 1.0, 0.5, 0.25, 5.0, 0.5, 1.0],\n",
       "  'hddm_include': ['z', 't', 'shape', 'scale', 'c'],\n",
       "  'nchoices': 2},\n",
       " 'gamma_drift_angle': {'name': 'gamma_drift_angle',\n",
       "  'params': ['v', 'a', 'z', 't', 'theta', 'shape', 'scale', 'c'],\n",
       "  'param_bounds': [[-3.0, 0.3, 0.1, 0.001, -0.1, 2.0, 0.01, -3.0],\n",
       "   [3.0, 3.0, 0.9, 2.0, 1.3, 10.0, 1.0, 3.0]],\n",
       "  'boundary': <function ssms.basic_simulators.boundary_functions.angle(t=1, theta=1)>,\n",
       "  'drift_fun': <function ssms.basic_simulators.drift_functions.gamma_drift(t=array([ 0. ,  0.1,  0.2,  0.3,  0.4,  0.5,  0.6,  0.7,  0.8,  0.9,  1. ,\n",
       "        1.1,  1.2,  1.3,  1.4,  1.5,  1.6,  1.7,  1.8,  1.9,  2. ,  2.1,\n",
       "        2.2,  2.3,  2.4,  2.5,  2.6,  2.7,  2.8,  2.9,  3. ,  3.1,  3.2,\n",
       "        3.3,  3.4,  3.5,  3.6,  3.7,  3.8,  3.9,  4. ,  4.1,  4.2,  4.3,\n",
       "        4.4,  4.5,  4.6,  4.7,  4.8,  4.9,  5. ,  5.1,  5.2,  5.3,  5.4,\n",
       "        5.5,  5.6,  5.7,  5.8,  5.9,  6. ,  6.1,  6.2,  6.3,  6.4,  6.5,\n",
       "        6.6,  6.7,  6.8,  6.9,  7. ,  7.1,  7.2,  7.3,  7.4,  7.5,  7.6,\n",
       "        7.7,  7.8,  7.9,  8. ,  8.1,  8.2,  8.3,  8.4,  8.5,  8.6,  8.7,\n",
       "        8.8,  8.9,  9. ,  9.1,  9.2,  9.3,  9.4,  9.5,  9.6,  9.7,  9.8,\n",
       "        9.9, 10. , 10.1, 10.2, 10.3, 10.4, 10.5, 10.6, 10.7, 10.8, 10.9,\n",
       "       11. , 11.1, 11.2, 11.3, 11.4, 11.5, 11.6, 11.7, 11.8, 11.9, 12. ,\n",
       "       12.1, 12.2, 12.3, 12.4, 12.5, 12.6, 12.7, 12.8, 12.9, 13. , 13.1,\n",
       "       13.2, 13.3, 13.4, 13.5, 13.6, 13.7, 13.8, 13.9, 14. , 14.1, 14.2,\n",
       "       14.3, 14.4, 14.5, 14.6, 14.7, 14.8, 14.9, 15. , 15.1, 15.2, 15.3,\n",
       "       15.4, 15.5, 15.6, 15.7, 15.8, 15.9, 16. , 16.1, 16.2, 16.3, 16.4,\n",
       "       16.5, 16.6, 16.7, 16.8, 16.9, 17. , 17.1, 17.2, 17.3, 17.4, 17.5,\n",
       "       17.6, 17.7, 17.8, 17.9, 18. , 18.1, 18.2, 18.3, 18.4, 18.5, 18.6,\n",
       "       18.7, 18.8, 18.9, 19. , 19.1, 19.2, 19.3, 19.4, 19.5, 19.6, 19.7,\n",
       "       19.8, 19.9]), shape=2, scale=0.01, c=1.5)>,\n",
       "  'n_params': 7,\n",
       "  'default_params': [0.0, 1.0, 0.5, 0.25, 0.0, 5.0, 0.5, 1.0],\n",
       "  'hddm_include': ['z', 't', 'theta', 'shape', 'scale', 'c'],\n",
       "  'nchoices': 2},\n",
       " 'ds_conflict_drift': {'name': 'ds_conflict_drift',\n",
       "  'params': ['a',\n",
       "   'z',\n",
       "   't',\n",
       "   'tinit',\n",
       "   'dinit',\n",
       "   'tslope',\n",
       "   'dslope',\n",
       "   'tfixedp',\n",
       "   'tcoh',\n",
       "   'dcoh'],\n",
       "  'param_bounds': [[0.3, 0.1, 0.001, 0.0, 0.0, 0.01, 0.01, 0.0, -1.0, -1.0],\n",
       "   [3.0, 0.9, 2.0, 5.0, 5.0, 5.0, 5.0, 5.0, 1.0, 1.0]],\n",
       "  'boundary': <function ssms.basic_simulators.boundary_functions.constant(t=0)>,\n",
       "  'drift_fun': <function ssms.basic_simulators.drift_functions.ds_conflict_drift(t=array([0.000e+00, 1.000e-03, 2.000e-03, ..., 9.997e+00, 9.998e+00,\n",
       "       9.999e+00]), init_p_t=0, init_p_d=0, slope_t=1, slope_d=1, fixed_p_t=1, coherence_t=1.5, coherence_d=1.5)>,\n",
       "  'n_params': 10,\n",
       "  'default_params': [2.0, 0.5, 1.0, 2.0, 2.0, 2.0, 2.0, 3.0, 0.5, -0.5],\n",
       "  'hddm_include': ['a',\n",
       "   'z',\n",
       "   't',\n",
       "   'tinit',\n",
       "   'dinit',\n",
       "   'tslope',\n",
       "   'dslope',\n",
       "   'tfixedp',\n",
       "   'tcoh',\n",
       "   'dcoh'],\n",
       "  'nchoices': 2},\n",
       " 'ds_conflict_drift_angle': {'name': 'ds_conflict_drift_angle',\n",
       "  'params': ['a',\n",
       "   'z',\n",
       "   't',\n",
       "   'tinit',\n",
       "   'dinit',\n",
       "   'tslope',\n",
       "   'dslope',\n",
       "   'tfixedp',\n",
       "   'tcoh',\n",
       "   'dcoh',\n",
       "   'theta'],\n",
       "  'param_bounds': [[0.3,\n",
       "    0.1,\n",
       "    0.001,\n",
       "    0.0,\n",
       "    0.0,\n",
       "    0.01,\n",
       "    0.01,\n",
       "    0.0,\n",
       "    -1.0,\n",
       "    -1.0,\n",
       "    0.0],\n",
       "   [3.0, 0.9, 2.0, 5.0, 5.0, 5.0, 5.0, 5.0, 1.0, 1.0, 1.3]],\n",
       "  'boundary': <function ssms.basic_simulators.boundary_functions.angle(t=1, theta=1)>,\n",
       "  'drift_fun': <function ssms.basic_simulators.drift_functions.ds_conflict_drift(t=array([0.000e+00, 1.000e-03, 2.000e-03, ..., 9.997e+00, 9.998e+00,\n",
       "       9.999e+00]), init_p_t=0, init_p_d=0, slope_t=1, slope_d=1, fixed_p_t=1, coherence_t=1.5, coherence_d=1.5)>,\n",
       "  'n_params': 10,\n",
       "  'default_params': [2.0, 0.5, 1.0, 2.0, 2.0, 2.0, 2.0, 3.0, 0.5, -0.5, 0.0],\n",
       "  'hddm_include': ['a',\n",
       "   'z',\n",
       "   't',\n",
       "   'tinit',\n",
       "   'dinit',\n",
       "   'tslope',\n",
       "   'dslope',\n",
       "   'tfixedp',\n",
       "   'tcoh',\n",
       "   'dcoh',\n",
       "   'theta'],\n",
       "  'nchoices': 2},\n",
       " 'ornstein': {'name': 'ornstein',\n",
       "  'params': ['v', 'a', 'z', 'g', 't'],\n",
       "  'param_bounds': [[-2.0, 0.3, 0.1, -1.0, 0.001], [2.0, 3.0, 0.9, 1.0, 2]],\n",
       "  'boundary': <function ssms.basic_simulators.boundary_functions.constant(t=0)>,\n",
       "  'n_params': 5,\n",
       "  'default_params': [0.0, 1.0, 0.5, 0.0, 0.001],\n",
       "  'hddm_include': ['z', 'g'],\n",
       "  'nchoices': 2},\n",
       " 'ornstein_angle': {'name': 'ornstein_angle',\n",
       "  'params': ['v', 'a', 'z', 'g', 't', 'theta'],\n",
       "  'param_bounds': [[-2.0, 0.3, 0.1, -1.0, 0.001, -0.1],\n",
       "   [2.0, 3.0, 0.9, 1.0, 2, 1.3]],\n",
       "  'boundary': <function ssms.basic_simulators.boundary_functions.angle(t=1, theta=1)>,\n",
       "  'n_params': 6,\n",
       "  'default_params': [0.0, 1.0, 0.5, 0.0, 0.001, 0.1],\n",
       "  'hddm_include': ['z', 'g', 'theta'],\n",
       "  'nchoices': 2},\n",
       " 'ddm_sdv': {'name': 'ddm_sdv',\n",
       "  'params': ['v', 'a', 'z', 't', 'sv'],\n",
       "  'param_bounds': [[-3.0, 0.3, 0.1, 0.001, 0.001], [3.0, 2.5, 0.9, 2.0, 2.5]],\n",
       "  'boundary': <function ssms.basic_simulators.boundary_functions.constant(t=0)>,\n",
       "  'n_params': 5,\n",
       "  'default_params': [0.0, 1.0, 0.5, 0.001, 0.001],\n",
       "  'hddm_include': ['z', 'sv'],\n",
       "  'nchoices': 2},\n",
       " 'race_3': {'name': 'race_3',\n",
       "  'params': ['v0', 'v1', 'v2', 'a', 'z0', 'z1', 'z2', 'ndt'],\n",
       "  'param_bounds': [[0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0],\n",
       "   [2.5, 2.5, 2.5, 3.0, 0.9, 0.9, 0.9, 2.0]],\n",
       "  'boundary': <function ssms.basic_simulators.boundary_functions.constant(t=0)>,\n",
       "  'n_params': 8,\n",
       "  'default_params': [0.0, 0.0, 0.0, 2.0, 0.5, 0.5, 0.5, 0.001],\n",
       "  'hddm_include': ['v0', 'v1', 'v2', 'a', 'z0', 'z1', 'z2', 'ndt'],\n",
       "  'nchoices': 3},\n",
       " 'race_no_bias_3': {'name': 'race_no_bias_3',\n",
       "  'params': ['v0', 'v1', 'v2', 'a', 'z', 'ndt'],\n",
       "  'param_bounds': [[0.0, 0.0, 0.0, 1.0, 0.0, 0.0],\n",
       "   [2.5, 2.5, 2.5, 3.0, 0.9, 2.0]],\n",
       "  'boundary': <function ssms.basic_simulators.boundary_functions.constant(t=0)>,\n",
       "  'n_params': 6,\n",
       "  'default_params': [0.0, 0.0, 0.0, 2.0, 0.5, 0.001],\n",
       "  'hddm_include': ['v0', 'v1', 'v2', 'a', 'z', 'ndt'],\n",
       "  'nchoices': 3},\n",
       " 'race_no_bias_angle_3': {'name': 'race_no_bias_angle_3',\n",
       "  'params': ['v0', 'v1', 'v2', 'a', 'z', 'ndt', 'theta'],\n",
       "  'param_bounds': [[0.0, 0.0, 0.0, 1.0, 0.0, 0.0, -0.1],\n",
       "   [2.5, 2.5, 2.5, 3.0, 0.9, 2.0, 1.45]],\n",
       "  'boundary': <function ssms.basic_simulators.boundary_functions.angle(t=1, theta=1)>,\n",
       "  'n_params': 7,\n",
       "  'default_params': [0.0, 0.0, 0.0, 2.0, 0.5, 0.001, 0.0],\n",
       "  'hddm_include': ['v0', 'v1', 'v2', 'a', 'z', 'ndt', 'theta'],\n",
       "  'nchoices': 3},\n",
       " 'race_4': {'name': 'race_4',\n",
       "  'params': ['v0', 'v1', 'v2', 'v3', 'a', 'z0', 'z1', 'z2', 'z3', 'ndt'],\n",
       "  'param_bounds': [[0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0],\n",
       "   [2.5, 2.5, 2.5, 2.5, 3.0, 0.9, 0.9, 0.9, 0.9, 2.0]],\n",
       "  'boundary': <function ssms.basic_simulators.boundary_functions.constant(t=0)>,\n",
       "  'n_params': 10,\n",
       "  'default_params': [0.0, 0.0, 0.0, 0.0, 2.0, 0.5, 0.5, 0.5, 0.5, 0.001],\n",
       "  'hddm_include': ['v0', 'v1', 'v2', 'a', 'z0', 'z1', 'z2', 'ndt'],\n",
       "  'nchoices': 4},\n",
       " 'race_no_bias_4': {'name': 'race_no_bias_4',\n",
       "  'params': ['v0', 'v1', 'v2', 'v3', 'a', 'z', 'ndt'],\n",
       "  'param_bounds': [[0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0],\n",
       "   [2.5, 2.5, 2.5, 2.5, 3.0, 0.9, 2.0]],\n",
       "  'boundary': <function ssms.basic_simulators.boundary_functions.constant(t=0)>,\n",
       "  'n_params': 7,\n",
       "  'default_params': [0.0, 0.0, 0.0, 0.0, 2.0, 0.5, 0.001],\n",
       "  'hddm_include': ['v0', 'v1', 'v2', 'v3', 'a', 'z', 'ndt'],\n",
       "  'nchoices': 4},\n",
       " 'race_no_bias_angle_4': {'name': 'race_no_bias_angle_4',\n",
       "  'params': ['v0', 'v1', 'v2', 'v3', 'a', 'z', 'ndt', 'theta'],\n",
       "  'param_bounds': [[0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, -0.1],\n",
       "   [2.5, 2.5, 2.5, 2.5, 3.0, 0.9, 2.0, 1.45]],\n",
       "  'boundary': <function ssms.basic_simulators.boundary_functions.angle(t=1, theta=1)>,\n",
       "  'n_params': 8,\n",
       "  'default_params': [0.0, 0.0, 0.0, 0.0, 2.0, 0.5, 0.001, 0.0],\n",
       "  'hddm_include': ['v0', 'v1', 'v2', 'v3', 'a', 'z', 'ndt', 'theta'],\n",
       "  'nchoices': 4},\n",
       " 'lca_3': {'name': 'lca_3',\n",
       "  'params': ['v0', 'v1', 'v2', 'a', 'z0', 'z1', 'z2', 'g', 'b', 'ndt'],\n",
       "  'param_bounds': [[0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, -1.0, -1.0, 0.0],\n",
       "   [2.5, 2.5, 2.5, 3.0, 0.9, 0.9, 0.9, 1.0, 1.0, 2.0]],\n",
       "  'boundary': <function ssms.basic_simulators.boundary_functions.constant(t=0)>,\n",
       "  'n_params': 10,\n",
       "  'default_params': [0.0, 0.0, 0.0, 2.0, 0.5, 0.5, 0.5, 0.0, 0.0, 0.001],\n",
       "  'hddm_include': ['v0', 'v1', 'v2', 'a', 'z0', 'z1', 'z2', 'g', 'b', 'ndt'],\n",
       "  'nchoices': 3},\n",
       " 'lca_no_bias_3': {'name': 'lca_no_bias_3',\n",
       "  'params': ['v0', 'v1', 'v2', 'a', 'z', 'g', 'b', 'ndt'],\n",
       "  'param_bounds': [[0.0, 0.0, 0.0, 1.0, 0.0, -1.0, -1.0, 0.0],\n",
       "   [2.5, 2.5, 2.5, 3.0, 0.9, 1.0, 1.0, 2.0]],\n",
       "  'boundary': <function ssms.basic_simulators.boundary_functions.constant(t=0)>,\n",
       "  'n_params': 8,\n",
       "  'default_params': [0.0, 0.0, 0.0, 2.0, 0.5, 0.0, 0.0, 0.001],\n",
       "  'hddm_include': ['v0', 'v1', 'v2', 'a', 'z', 'g', 'b', 'ndt'],\n",
       "  'nchoices': 3},\n",
       " 'lca_no_bias_angle_3': {'name': 'lca_no_bias_angle_3',\n",
       "  'params': ['v0', 'v1', 'v2', 'a', 'z', 'g', 'b', 'ndt', 'theta'],\n",
       "  'param_bounds': [[0.0, 0.0, 0.0, 1.0, 0.0, -1.0, -1.0, 0.0, -1.0],\n",
       "   [2.5, 2.5, 2.5, 3.0, 0.9, 1.0, 1.0, 2.0, 1.45]],\n",
       "  'boundary': <function ssms.basic_simulators.boundary_functions.angle(t=1, theta=1)>,\n",
       "  'n_params': 9,\n",
       "  'default_params': [0.0, 0.0, 0.0, 2.0, 0.5, 0.0, 0.0, 0.001, 0.0],\n",
       "  'hddm_include': ['v0', 'v1', 'v2', 'a', 'z', 'g', 'b', 'ndt', 'theta'],\n",
       "  'nchoices': 3},\n",
       " 'lca_4': {'name': 'lca_4',\n",
       "  'params': ['v0',\n",
       "   'v1',\n",
       "   'v2',\n",
       "   'v3',\n",
       "   'a',\n",
       "   'z0',\n",
       "   'z1',\n",
       "   'z2',\n",
       "   'z3',\n",
       "   'g',\n",
       "   'b',\n",
       "   'ndt'],\n",
       "  'param_bounds': [[0.0,\n",
       "    0.0,\n",
       "    0.0,\n",
       "    0.0,\n",
       "    1.0,\n",
       "    0.0,\n",
       "    0.0,\n",
       "    0.0,\n",
       "    0.0,\n",
       "    -1.0,\n",
       "    -1.0,\n",
       "    0.0],\n",
       "   [2.5, 2.5, 2.5, 2.5, 3.0, 0.9, 0.9, 0.9, 0.9, 1.0, 1.0, 2.0]],\n",
       "  'boundary': <function ssms.basic_simulators.boundary_functions.constant(t=0)>,\n",
       "  'n_params': 12,\n",
       "  'default_params': [0.0,\n",
       "   0.0,\n",
       "   0.0,\n",
       "   0.0,\n",
       "   2.0,\n",
       "   0.5,\n",
       "   0.5,\n",
       "   0.5,\n",
       "   0.5,\n",
       "   0.0,\n",
       "   0.0,\n",
       "   0.001],\n",
       "  'hddm_include': ['v0',\n",
       "   'v1',\n",
       "   'v2',\n",
       "   'v3',\n",
       "   'a',\n",
       "   'z0',\n",
       "   'z1',\n",
       "   'z2',\n",
       "   'z3',\n",
       "   'g',\n",
       "   'b',\n",
       "   'ndt'],\n",
       "  'nchoices': 4},\n",
       " 'lca_no_bias_4': {'name': 'lca_no_bias_4',\n",
       "  'params': ['v0', 'v1', 'v2', 'v3', 'a', 'z', 'g', 'b', 'ndt'],\n",
       "  'param_bounds': [[0.0, 0.0, 0.0, 0.0, 1.0, 0.0, -1.0, -1.0, 0.0],\n",
       "   [2.5, 2.5, 2.5, 2.5, 3.0, 0.9, 1.0, 1.0, 2.0]],\n",
       "  'boundary': <function ssms.basic_simulators.boundary_functions.constant(t=0)>,\n",
       "  'n_params': 9,\n",
       "  'default_params': [0.0, 0.0, 0.0, 0.0, 2.0, 0.5, 0.0, 0.0, 0.001],\n",
       "  'hddm_include': ['v0', 'v1', 'v2', 'v3', 'a', 'z', 'g', 'b', 'ndt'],\n",
       "  'nchoices': 4},\n",
       " 'lca_no_bias_angle_4': {'name': 'lca_no_bias_angle_4',\n",
       "  'params': ['v0', 'v1', 'v2', 'v3', 'a', 'z', 'g', 'b', 'ndt', 'theta'],\n",
       "  'param_bounds': [[0.0, 0.0, 0.0, 0.0, 1.0, 0.0, -1.0, -1.0, 0.0, -0.1],\n",
       "   [2.5, 2.5, 2.5, 2.5, 3.0, 0.9, 1.0, 1.0, 2.0, 1.45]],\n",
       "  'boundary': <function ssms.basic_simulators.boundary_functions.angle(t=1, theta=1)>,\n",
       "  'n_params': 10,\n",
       "  'default_params': [0.0, 0.0, 0.0, 0.0, 2.0, 0.5, 0.0, 0.0, 0.001, 0.0],\n",
       "  'hddm_include': ['v0', 'v1', 'v2', 'v3', 'a', 'z', 'g', 'b', 'ndt', 'theta'],\n",
       "  'nchoices': 4},\n",
       " 'ddm_par2': {'name': 'ddm_par2',\n",
       "  'params': ['vh', 'vl1', 'vl2', 'a', 'zh', 'zl1', 'zl2', 't'],\n",
       "  'param_bounds': [[-4.0, -4.0, -4.0, 0.3, 0.2, 0.2, 0.2, 0.0],\n",
       "   [4.0, 4.0, 4.0, 2.5, 0.8, 0.8, 0.8, 2.0]],\n",
       "  'boundary': <function ssms.basic_simulators.boundary_functions.constant(t=0)>,\n",
       "  'n_params': 8,\n",
       "  'default_params': [0.0, 0.0, 0.0, 1.0, 0.5, 0.5, 0.5, 1.0],\n",
       "  'hddm_include': ['vh', 'vl1', 'vl2', 'a', 'zh', 'zl1', 'zl2', 't'],\n",
       "  'nchoices': 4},\n",
       " 'ddm_par2_no_bias': {'name': 'ddm_par2_no_bias',\n",
       "  'params': ['vh', 'vl1', 'vl2', 'a', 't'],\n",
       "  'param_bounds': [[-4.0, -4.0, -4.0, 0.3, 0.0], [4.0, 4.0, 4.0, 2.5, 2.0]],\n",
       "  'boundary': <function ssms.basic_simulators.boundary_functions.constant(t=0)>,\n",
       "  'n_params': 5,\n",
       "  'default_params': [0.0, 0.0, 0.0, 1.0, 1.0],\n",
       "  'hddm_include': ['vh', 'vl1', 'vl2', 'a', 't'],\n",
       "  'nchoices': 4},\n",
       " 'ddm_par2_conflict_gamma_no_bias': {'name': 'ddm_par2_conflict_gamma_no_bias',\n",
       "  'params': ['vh',\n",
       "   'vl1',\n",
       "   'vl2',\n",
       "   't',\n",
       "   'a',\n",
       "   'theta',\n",
       "   'scale',\n",
       "   'alpha_gamma',\n",
       "   'scale_gamma'],\n",
       "  'param_bounds': [[-4.0, -4.0, -4.0, 0.0, 0.3, 0.0, 0.0, 1.1, 0.5],\n",
       "   [4.0, 4.0, 4.0, 2.0, 2.5, 0.5, 5.0, 5.0, 5.0]],\n",
       "  'boundary': <function ssms.basic_simulators.boundary_functions.conflict_gamma_bound(t=array([ 0. ,  0.1,  0.2,  0.3,  0.4,  0.5,  0.6,  0.7,  0.8,  0.9,  1. ,\n",
       "        1.1,  1.2,  1.3,  1.4,  1.5,  1.6,  1.7,  1.8,  1.9,  2. ,  2.1,\n",
       "        2.2,  2.3,  2.4,  2.5,  2.6,  2.7,  2.8,  2.9,  3. ,  3.1,  3.2,\n",
       "        3.3,  3.4,  3.5,  3.6,  3.7,  3.8,  3.9,  4. ,  4.1,  4.2,  4.3,\n",
       "        4.4,  4.5,  4.6,  4.7,  4.8,  4.9,  5. ,  5.1,  5.2,  5.3,  5.4,\n",
       "        5.5,  5.6,  5.7,  5.8,  5.9,  6. ,  6.1,  6.2,  6.3,  6.4,  6.5,\n",
       "        6.6,  6.7,  6.8,  6.9,  7. ,  7.1,  7.2,  7.3,  7.4,  7.5,  7.6,\n",
       "        7.7,  7.8,  7.9,  8. ,  8.1,  8.2,  8.3,  8.4,  8.5,  8.6,  8.7,\n",
       "        8.8,  8.9,  9. ,  9.1,  9.2,  9.3,  9.4,  9.5,  9.6,  9.7,  9.8,\n",
       "        9.9, 10. , 10.1, 10.2, 10.3, 10.4, 10.5, 10.6, 10.7, 10.8, 10.9,\n",
       "       11. , 11.1, 11.2, 11.3, 11.4, 11.5, 11.6, 11.7, 11.8, 11.9, 12. ,\n",
       "       12.1, 12.2, 12.3, 12.4, 12.5, 12.6, 12.7, 12.8, 12.9, 13. , 13.1,\n",
       "       13.2, 13.3, 13.4, 13.5, 13.6, 13.7, 13.8, 13.9, 14. , 14.1, 14.2,\n",
       "       14.3, 14.4, 14.5, 14.6, 14.7, 14.8, 14.9, 15. , 15.1, 15.2, 15.3,\n",
       "       15.4, 15.5, 15.6, 15.7, 15.8, 15.9, 16. , 16.1, 16.2, 16.3, 16.4,\n",
       "       16.5, 16.6, 16.7, 16.8, 16.9, 17. , 17.1, 17.2, 17.3, 17.4, 17.5,\n",
       "       17.6, 17.7, 17.8, 17.9, 18. , 18.1, 18.2, 18.3, 18.4, 18.5, 18.6,\n",
       "       18.7, 18.8, 18.9, 19. , 19.1, 19.2, 19.3, 19.4, 19.5, 19.6, 19.7,\n",
       "       19.8, 19.9]), a=0.5, theta=0.5, scale=1, alpha_gamma=1.01, scale_gamma=0.3)>,\n",
       "  'n_params': 9,\n",
       "  'default_params': [0.0, 0.0, 0.0, 1.0, 1.0, 0.5, 1.0, 2, 2],\n",
       "  'hddm_include': ['vh',\n",
       "   'vl1',\n",
       "   'vl2',\n",
       "   't',\n",
       "   'a',\n",
       "   'theta',\n",
       "   'scale',\n",
       "   'alpha_gamma',\n",
       "   'scale_gamma'],\n",
       "  'nchoices': 4},\n",
       " 'ddm_par2_angle_no_bias': {'name': 'ddm_par2_angle_no_bias',\n",
       "  'params': ['vh', 'vl1', 'vl2', 'a', 't', 'theta'],\n",
       "  'param_bounds': [[-4.0, -4.0, -4.0, 0.3, 0.0, -0.1],\n",
       "   [4.0, 4.0, 4.0, 2.5, 2.0, 1.0]],\n",
       "  'boundary': <function ssms.basic_simulators.boundary_functions.angle(t=1, theta=1)>,\n",
       "  'boundary_multiplicative': False,\n",
       "  'n_params': 6,\n",
       "  'default_params': [0.0, 0.0, 0.0, 1.0, 1.0, 0.0],\n",
       "  'hddm_include': ['vh', 'vl1', 'vl2', 'a', 't', 'theta'],\n",
       "  'nchoices': 4},\n",
       " 'ddm_par2_weibull_no_bias': {'name': 'ddm_par2_weibull_no_bias',\n",
       "  'params': ['vh', 'vl1', 'vl2', 'a', 't', 'alpha', 'beta'],\n",
       "  'param_bounds': [[-4.0, -4.0, -4.0, 0.3, 0.0, 0.31, 0.31],\n",
       "   [4.0, 4.0, 4.0, 2.5, 2.0, 4.99, 6.99]],\n",
       "  'boundary': <function ssms.basic_simulators.boundary_functions.weibull_cdf(t=1, alpha=1, beta=1)>,\n",
       "  'boundary_multiplicative': True,\n",
       "  'n_params': 7,\n",
       "  'default_params': [0.0, 0.0, 0.0, 1.0, 1.0, 0.0],\n",
       "  'hddm_include': ['vh', 'vl1', 'vl2', 'a', 't', 'theta'],\n",
       "  'nchoices': 4},\n",
       " 'ddm_seq2': {'name': 'ddm_seq2',\n",
       "  'params': ['vh', 'vl1', 'vl2', 'a', 'zh', 'zl1', 'zl2', 't'],\n",
       "  'param_bounds': [[-4.0, -4.0, -4.0, 0.3, 0.2, 0.2, 0.2, 0.0],\n",
       "   [4.0, 4.0, 4.0, 2.5, 0.8, 0.8, 0.8, 2.0]],\n",
       "  'boundary': <function ssms.basic_simulators.boundary_functions.constant(t=0)>,\n",
       "  'n_params': 8,\n",
       "  'default_params': [0.0, 0.0, 0.0, 1.0, 0.5, 0.5, 0.5, 1.0],\n",
       "  'hddm_include': ['vh', 'vl1', 'vl2', 'a', 'zh', 'zl1', 'zl2', 't'],\n",
       "  'nchoices': 4},\n",
       " 'ddm_seq2_no_bias': {'name': 'ddm_seq2_no_bias',\n",
       "  'params': ['vh', 'vl1', 'vl2', 'a', 't'],\n",
       "  'param_bounds': [[-4.0, -4.0, -4.0, 0.3, 0.0], [4.0, 4.0, 4.0, 2.5, 2.0]],\n",
       "  'boundary': <function ssms.basic_simulators.boundary_functions.constant(t=0)>,\n",
       "  'n_params': 5,\n",
       "  'default_params': [0.0, 0.0, 0.0, 1.0, 1.0],\n",
       "  'hddm_include': ['vh', 'vl1', 'vl2', 'a', 't'],\n",
       "  'nchoices': 4},\n",
       " 'ddm_seq2_conflict_gamma_no_bias': {'name': 'ddm_seq2_conflict_gamma_no_bias',\n",
       "  'params': ['vh',\n",
       "   'vl1',\n",
       "   'vl2',\n",
       "   't',\n",
       "   'a',\n",
       "   'theta',\n",
       "   'scale',\n",
       "   'alpha_gamma',\n",
       "   'scale_gamma'],\n",
       "  'param_bounds': [[-4.0, -4.0, -4.0, 0.0, 0.3, 0.0, 0.0, 1.1, 0.5],\n",
       "   [4.0, 4.0, 4.0, 2.0, 2.5, 0.5, 5.0, 5.0, 5.0]],\n",
       "  'boundary': <function ssms.basic_simulators.boundary_functions.conflict_gamma_bound(t=array([ 0. ,  0.1,  0.2,  0.3,  0.4,  0.5,  0.6,  0.7,  0.8,  0.9,  1. ,\n",
       "        1.1,  1.2,  1.3,  1.4,  1.5,  1.6,  1.7,  1.8,  1.9,  2. ,  2.1,\n",
       "        2.2,  2.3,  2.4,  2.5,  2.6,  2.7,  2.8,  2.9,  3. ,  3.1,  3.2,\n",
       "        3.3,  3.4,  3.5,  3.6,  3.7,  3.8,  3.9,  4. ,  4.1,  4.2,  4.3,\n",
       "        4.4,  4.5,  4.6,  4.7,  4.8,  4.9,  5. ,  5.1,  5.2,  5.3,  5.4,\n",
       "        5.5,  5.6,  5.7,  5.8,  5.9,  6. ,  6.1,  6.2,  6.3,  6.4,  6.5,\n",
       "        6.6,  6.7,  6.8,  6.9,  7. ,  7.1,  7.2,  7.3,  7.4,  7.5,  7.6,\n",
       "        7.7,  7.8,  7.9,  8. ,  8.1,  8.2,  8.3,  8.4,  8.5,  8.6,  8.7,\n",
       "        8.8,  8.9,  9. ,  9.1,  9.2,  9.3,  9.4,  9.5,  9.6,  9.7,  9.8,\n",
       "        9.9, 10. , 10.1, 10.2, 10.3, 10.4, 10.5, 10.6, 10.7, 10.8, 10.9,\n",
       "       11. , 11.1, 11.2, 11.3, 11.4, 11.5, 11.6, 11.7, 11.8, 11.9, 12. ,\n",
       "       12.1, 12.2, 12.3, 12.4, 12.5, 12.6, 12.7, 12.8, 12.9, 13. , 13.1,\n",
       "       13.2, 13.3, 13.4, 13.5, 13.6, 13.7, 13.8, 13.9, 14. , 14.1, 14.2,\n",
       "       14.3, 14.4, 14.5, 14.6, 14.7, 14.8, 14.9, 15. , 15.1, 15.2, 15.3,\n",
       "       15.4, 15.5, 15.6, 15.7, 15.8, 15.9, 16. , 16.1, 16.2, 16.3, 16.4,\n",
       "       16.5, 16.6, 16.7, 16.8, 16.9, 17. , 17.1, 17.2, 17.3, 17.4, 17.5,\n",
       "       17.6, 17.7, 17.8, 17.9, 18. , 18.1, 18.2, 18.3, 18.4, 18.5, 18.6,\n",
       "       18.7, 18.8, 18.9, 19. , 19.1, 19.2, 19.3, 19.4, 19.5, 19.6, 19.7,\n",
       "       19.8, 19.9]), a=0.5, theta=0.5, scale=1, alpha_gamma=1.01, scale_gamma=0.3)>,\n",
       "  'n_params': 9,\n",
       "  'default_params': [0.0, 0.0, 0.0, 1.0, 1.0, 0.5, 1.0, 2, 2],\n",
       "  'hddm_include': ['vh',\n",
       "   'vl1',\n",
       "   'vl2',\n",
       "   't',\n",
       "   'a',\n",
       "   'theta',\n",
       "   'scale',\n",
       "   'alpha_gamma',\n",
       "   'scale_gamma'],\n",
       "  'nchoices': 4},\n",
       " 'ddm_seq2_angle_no_bias': {'name': 'ddm_seq2_angle_no_bias',\n",
       "  'params': ['vh', 'vl1', 'vl2', 'a', 't', 'theta'],\n",
       "  'param_bounds': [[-4.0, -4.0, -4.0, 0.3, 0.0, -0.1],\n",
       "   [4.0, 4.0, 4.0, 2.5, 2.0, 1.0]],\n",
       "  'boundary': <function ssms.basic_simulators.boundary_functions.angle(t=1, theta=1)>,\n",
       "  'boundary_multiplicative': False,\n",
       "  'n_params': 6,\n",
       "  'default_params': [0.0, 0.0, 0.0, 1.0, 1.0, 0.0],\n",
       "  'hddm_include': ['vh', 'vl1', 'vl2', 'a', 't', 'theta'],\n",
       "  'nchoices': 4},\n",
       " 'ddm_seq2_weibull_no_bias': {'name': 'ddm_seq2_weibull_no_bias',\n",
       "  'params': ['vh', 'vl1', 'vl2', 'a', 't', 'alpha', 'beta'],\n",
       "  'param_bounds': [[-4.0, -4.0, -4.0, 0.3, 0.0, 0.31, 0.31],\n",
       "   [4.0, 4.0, 4.0, 2.5, 2.0, 4.99, 6.99]],\n",
       "  'boundary': <function ssms.basic_simulators.boundary_functions.weibull_cdf(t=1, alpha=1, beta=1)>,\n",
       "  'boundary_multiplicative': True,\n",
       "  'n_params': 7,\n",
       "  'default_params': [0.0, 0.0, 0.0, 1.0, 1.0, 2.5, 3.5],\n",
       "  'hddm_include': ['vh', 'vl1', 'vl2', 'a', 't', 'alpha', 'beta'],\n",
       "  'nchoices': 4},\n",
       " 'ddm_mic2_adj': {'name': 'ddm_mic2_adj',\n",
       "  'params': ['vh', 'vl1', 'vl2', 'a', 'zh', 'zl1', 'zl2', 'd', 't'],\n",
       "  'param_bounds': [[-4.0, -4.0, -4.0, 0.3, 0.2, 0.2, 0.2, 0.0, 0.0],\n",
       "   [4.0, 4.0, 4.0, 2.5, 0.8, 0.8, 0.8, 1.0, 2.0]],\n",
       "  'boundary': <function ssms.basic_simulators.boundary_functions.constant(t=0)>,\n",
       "  'n_params': 9,\n",
       "  'default_params': [0.0, 0.0, 0.0, 1.0, 0.5, 0.5, 0.5, 0.5, 0.5],\n",
       "  'hddm_include': ['vh', 'vl1', 'vl2', 'a', 'zh', 'zl1', 'zl2', 'd', 't'],\n",
       "  'nchoices': 4},\n",
       " 'ddm_mic2_adj_no_bias': {'name': 'ddm_mic2_adj_no_bias',\n",
       "  'params': ['vh', 'vl1', 'vl2', 'a', 'd', 't'],\n",
       "  'param_bounds': [[-4.0, -4.0, -4.0, 0.3, 0.0, 0.0],\n",
       "   [4.0, 4.0, 4.0, 2.5, 1.0, 2.0]],\n",
       "  'boundary': <function ssms.basic_simulators.boundary_functions.constant(t=0)>,\n",
       "  'n_params': 6,\n",
       "  'default_params': [0.0, 0.0, 0.0, 1.0, 0.5, 1.0],\n",
       "  'hddm_include': ['vh', 'vl1', 'vl2', 'a', 'zh', 'zl1', 'zl2', 'd', 't'],\n",
       "  'nchoices': 4},\n",
       " 'ddm_mic2_adj_conflict_gamma_no_bias': {'name': 'ddm_mic2_adj_conflict_gamma_no_bias',\n",
       "  'params': ['vh',\n",
       "   'vl1',\n",
       "   'vl2',\n",
       "   'd',\n",
       "   't',\n",
       "   'a',\n",
       "   'theta',\n",
       "   'scale',\n",
       "   'alpha_gamma',\n",
       "   'scale_gamma'],\n",
       "  'param_bounds': [[-4.0, -4.0, -4.0, 0.0, 0.0, 0.3, 0.0, 0.0, 1.1, 0.5],\n",
       "   [4.0, 4.0, 4.0, 1.0, 2.0, 2.5, 0.5, 5.0, 5.0, 5.0]],\n",
       "  'boundary': <function ssms.basic_simulators.boundary_functions.conflict_gamma_bound(t=array([ 0. ,  0.1,  0.2,  0.3,  0.4,  0.5,  0.6,  0.7,  0.8,  0.9,  1. ,\n",
       "        1.1,  1.2,  1.3,  1.4,  1.5,  1.6,  1.7,  1.8,  1.9,  2. ,  2.1,\n",
       "        2.2,  2.3,  2.4,  2.5,  2.6,  2.7,  2.8,  2.9,  3. ,  3.1,  3.2,\n",
       "        3.3,  3.4,  3.5,  3.6,  3.7,  3.8,  3.9,  4. ,  4.1,  4.2,  4.3,\n",
       "        4.4,  4.5,  4.6,  4.7,  4.8,  4.9,  5. ,  5.1,  5.2,  5.3,  5.4,\n",
       "        5.5,  5.6,  5.7,  5.8,  5.9,  6. ,  6.1,  6.2,  6.3,  6.4,  6.5,\n",
       "        6.6,  6.7,  6.8,  6.9,  7. ,  7.1,  7.2,  7.3,  7.4,  7.5,  7.6,\n",
       "        7.7,  7.8,  7.9,  8. ,  8.1,  8.2,  8.3,  8.4,  8.5,  8.6,  8.7,\n",
       "        8.8,  8.9,  9. ,  9.1,  9.2,  9.3,  9.4,  9.5,  9.6,  9.7,  9.8,\n",
       "        9.9, 10. , 10.1, 10.2, 10.3, 10.4, 10.5, 10.6, 10.7, 10.8, 10.9,\n",
       "       11. , 11.1, 11.2, 11.3, 11.4, 11.5, 11.6, 11.7, 11.8, 11.9, 12. ,\n",
       "       12.1, 12.2, 12.3, 12.4, 12.5, 12.6, 12.7, 12.8, 12.9, 13. , 13.1,\n",
       "       13.2, 13.3, 13.4, 13.5, 13.6, 13.7, 13.8, 13.9, 14. , 14.1, 14.2,\n",
       "       14.3, 14.4, 14.5, 14.6, 14.7, 14.8, 14.9, 15. , 15.1, 15.2, 15.3,\n",
       "       15.4, 15.5, 15.6, 15.7, 15.8, 15.9, 16. , 16.1, 16.2, 16.3, 16.4,\n",
       "       16.5, 16.6, 16.7, 16.8, 16.9, 17. , 17.1, 17.2, 17.3, 17.4, 17.5,\n",
       "       17.6, 17.7, 17.8, 17.9, 18. , 18.1, 18.2, 18.3, 18.4, 18.5, 18.6,\n",
       "       18.7, 18.8, 18.9, 19. , 19.1, 19.2, 19.3, 19.4, 19.5, 19.6, 19.7,\n",
       "       19.8, 19.9]), a=0.5, theta=0.5, scale=1, alpha_gamma=1.01, scale_gamma=0.3)>,\n",
       "  'n_params': 10,\n",
       "  'default_params': [0.0, 0.0, 0.0, 0.5, 1.0, 1.0, 1.0, 1.0, 2, 2],\n",
       "  'hddm_include': ['vh',\n",
       "   'vl1',\n",
       "   'vl2',\n",
       "   'a',\n",
       "   'd',\n",
       "   't',\n",
       "   'theta',\n",
       "   'scale',\n",
       "   'alpha_gamma',\n",
       "   'scale_gamma'],\n",
       "  'nchoices': 4},\n",
       " 'ddm_mic2_adj_angle_no_bias': {'name': 'ddm_mic2_adj_angle_no_bias',\n",
       "  'params': ['vh', 'vl1', 'vl2', 'a', 'd', 't', 'theta'],\n",
       "  'param_bounds': [[-4.0, -4.0, -4.0, 0.3, 0.0, 0.0, -0.1],\n",
       "   [4.0, 4.0, 4.0, 2.5, 1.0, 2.0, 1.0]],\n",
       "  'boundary': <function ssms.basic_simulators.boundary_functions.angle(t=1, theta=1)>,\n",
       "  'boundary_multiplicative': False,\n",
       "  'n_params': 7,\n",
       "  'default_params': [0.0, 0.0, 0.0, 1.0, 0.5, 1.0, 0.0],\n",
       "  'hddm_include': ['vh', 'vl1', 'vl2', 'a', 'd', 't', 'theta'],\n",
       "  'nchoices': 4},\n",
       " 'ddm_mic2_adj_weibull_no_bias': {'name': 'ddm_mic2_adj_weibull_no_bias',\n",
       "  'params': ['vh', 'vl1', 'vl2', 'a', 'd', 't', 'alpha', 'beta'],\n",
       "  'param_bounds': [[-4.0, -4.0, -4.0, 0.3, 0.0, 0.0, 0.31, 0.31],\n",
       "   [4.0, 4.0, 4.0, 2.5, 1.0, 2.0, 4.99, 6.99]],\n",
       "  'boundary': <function ssms.basic_simulators.boundary_functions.weibull_cdf(t=1, alpha=1, beta=1)>,\n",
       "  'boundary_multiplicative': True,\n",
       "  'n_params': 8,\n",
       "  'default_params': [0.0, 0.0, 0.0, 1.0, 0.5, 1.0, 2.5, 3.5],\n",
       "  'hddm_include': ['vh', 'vl1', 'vl2', 'a', 'd', 't', 'theta'],\n",
       "  'nchoices': 4},\n",
       " 'tradeoff_no_bias': {'name': 'tradeoff_no_bias',\n",
       "  'params': ['vh', 'vl1', 'vl2', 'a', 'd', 't'],\n",
       "  'param_bounds': [[-4.0, -4.0, -4.0, 0.3, 0.0, 0.0],\n",
       "   [4.0, 4.0, 4.0, 2.5, 1.0, 2.0]],\n",
       "  'boundary': <function ssms.basic_simulators.boundary_functions.constant(t=0)>,\n",
       "  'n_params': 6,\n",
       "  'default_params': [0.0, 0.0, 0.0, 1.0, 0.5, 1.0],\n",
       "  'hddm_include': ['vh', 'vl1', 'vl2', 'a', 'd', 't'],\n",
       "  'nchoices': 4},\n",
       " 'tradeoff_angle_no_bias': {'name': 'tradeoff_angle_no_bias',\n",
       "  'params': ['vh', 'vl1', 'vl2', 'a', 'd', 't', 'theta'],\n",
       "  'param_bounds': [[-4.0, -4.0, -4.0, 0.3, 0.0, 0.0, -0.1],\n",
       "   [4.0, 4.0, 4.0, 2.5, 1.0, 2.0, 1.0]],\n",
       "  'boundary': <function ssms.basic_simulators.boundary_functions.angle(t=1, theta=1)>,\n",
       "  'boundary_multiplicative': False,\n",
       "  'n_params': 7,\n",
       "  'default_params': [0.0, 0.0, 0.0, 1.0, 0.5, 1.0, 0.0],\n",
       "  'hddm_include': ['vh', 'vl1', 'vl2', 'a', 'd', 't', 'theta'],\n",
       "  'nchoices': 4},\n",
       " 'tradeoff_weibull_no_bias': {'name': 'tradeoff_weibull_no_bias',\n",
       "  'params': ['vh', 'vl1', 'vl2', 'a', 'd', 't', 'alpha', 'beta'],\n",
       "  'param_bounds': [[-4.0, -4.0, -4.0, 0.3, 0.0, 0.0, 0.31, 0.31],\n",
       "   [4.0, 4.0, 4.0, 2.5, 1.0, 2.0, 4.99, 6.99]],\n",
       "  'boundary': <function ssms.basic_simulators.boundary_functions.weibull_cdf(t=1, alpha=1, beta=1)>,\n",
       "  'boundary_multiplicative': True,\n",
       "  'n_params': 8,\n",
       "  'default_params': [0.0, 0.0, 0.0, 1.0, 0.5, 1.0, 2.5, 3.5],\n",
       "  'hddm_include': ['vh', 'vl1', 'vl2', 'a', 'd', 't', 'theta'],\n",
       "  'nchoices': 4},\n",
       " 'tradeoff_conflict_gamma_no_bias': {'name': 'tradeoff_conflict_gamma_no_bias',\n",
       "  'params': ['vh',\n",
       "   'vl1',\n",
       "   'vl2',\n",
       "   'd',\n",
       "   't',\n",
       "   'a',\n",
       "   'theta',\n",
       "   'scale',\n",
       "   'alphagamma',\n",
       "   'scalegamma'],\n",
       "  'param_bounds': [[-4.0, -4.0, -4.0, 0.0, 0.0, 0.3, 0.0, 0.0, 1.1, 0.5],\n",
       "   [4.0, 4.0, 4.0, 1.0, 2.0, 2.5, 0.5, 5.0, 5.0, 5.0]],\n",
       "  'boundary': <function ssms.basic_simulators.boundary_functions.conflict_gamma_bound(t=array([ 0. ,  0.1,  0.2,  0.3,  0.4,  0.5,  0.6,  0.7,  0.8,  0.9,  1. ,\n",
       "        1.1,  1.2,  1.3,  1.4,  1.5,  1.6,  1.7,  1.8,  1.9,  2. ,  2.1,\n",
       "        2.2,  2.3,  2.4,  2.5,  2.6,  2.7,  2.8,  2.9,  3. ,  3.1,  3.2,\n",
       "        3.3,  3.4,  3.5,  3.6,  3.7,  3.8,  3.9,  4. ,  4.1,  4.2,  4.3,\n",
       "        4.4,  4.5,  4.6,  4.7,  4.8,  4.9,  5. ,  5.1,  5.2,  5.3,  5.4,\n",
       "        5.5,  5.6,  5.7,  5.8,  5.9,  6. ,  6.1,  6.2,  6.3,  6.4,  6.5,\n",
       "        6.6,  6.7,  6.8,  6.9,  7. ,  7.1,  7.2,  7.3,  7.4,  7.5,  7.6,\n",
       "        7.7,  7.8,  7.9,  8. ,  8.1,  8.2,  8.3,  8.4,  8.5,  8.6,  8.7,\n",
       "        8.8,  8.9,  9. ,  9.1,  9.2,  9.3,  9.4,  9.5,  9.6,  9.7,  9.8,\n",
       "        9.9, 10. , 10.1, 10.2, 10.3, 10.4, 10.5, 10.6, 10.7, 10.8, 10.9,\n",
       "       11. , 11.1, 11.2, 11.3, 11.4, 11.5, 11.6, 11.7, 11.8, 11.9, 12. ,\n",
       "       12.1, 12.2, 12.3, 12.4, 12.5, 12.6, 12.7, 12.8, 12.9, 13. , 13.1,\n",
       "       13.2, 13.3, 13.4, 13.5, 13.6, 13.7, 13.8, 13.9, 14. , 14.1, 14.2,\n",
       "       14.3, 14.4, 14.5, 14.6, 14.7, 14.8, 14.9, 15. , 15.1, 15.2, 15.3,\n",
       "       15.4, 15.5, 15.6, 15.7, 15.8, 15.9, 16. , 16.1, 16.2, 16.3, 16.4,\n",
       "       16.5, 16.6, 16.7, 16.8, 16.9, 17. , 17.1, 17.2, 17.3, 17.4, 17.5,\n",
       "       17.6, 17.7, 17.8, 17.9, 18. , 18.1, 18.2, 18.3, 18.4, 18.5, 18.6,\n",
       "       18.7, 18.8, 18.9, 19. , 19.1, 19.2, 19.3, 19.4, 19.5, 19.6, 19.7,\n",
       "       19.8, 19.9]), a=0.5, theta=0.5, scale=1, alpha_gamma=1.01, scale_gamma=0.3)>,\n",
       "  'boundary_multiplicative': True,\n",
       "  'n_params': 10,\n",
       "  'default_params': [0.0, 0.0, 0.0, 0.5, 1.0, 1.0, 1.0, 1.0, 2, 2],\n",
       "  'hddm_include': ['vh',\n",
       "   'vl1',\n",
       "   'vl2',\n",
       "   'a',\n",
       "   'd',\n",
       "   't',\n",
       "   'theta',\n",
       "   'scale',\n",
       "   'alphagamma',\n",
       "   'scalegamma'],\n",
       "  'nchoices': 4},\n",
       " 'glob': {'name': 'glob',\n",
       "  'params': ['v', 'a', 'z', 'alphar', 'g', 't', 'theta'],\n",
       "  'param_bounds': [[-3.0, 0.3, 0.15, 1.0, -1.0, 1e-05, 0.0],\n",
       "   [3.0, 2.0, 0.85, 2.0, 1.0, 2.0, 1.45]],\n",
       "  'n_params': 7,\n",
       "  'default_params': [0.0, 1.0, 0.5, 2.0, 0.0, 1.0, 2.5, 3.5],\n",
       "  'hddm_include': ['z', 'alphar', 'g', 'theta'],\n",
       "  'nchoices': 2,\n",
       "  'boundary_multiplicative': False,\n",
       "  'components': {'names': ['g', 'alphar', 'theta'],\n",
       "   'off_values': array([0., 1., 0.], dtype=float32),\n",
       "   'probabilities': array([0.33333333, 0.33333333, 0.33333333]),\n",
       "   'labels': array([[1, 0, 0],\n",
       "          [0, 1, 0],\n",
       "          [0, 0, 1]]),\n",
       "   'n_components': 3}},\n",
       " 'weibull_cdf': {'name': 'weibull',\n",
       "  'params': ['v', 'a', 'z', 't', 'alpha', 'beta'],\n",
       "  'param_bounds': [[-2.5, 0.3, 0.2, 0.001, 0.31, 0.31],\n",
       "   [2.5, 2.5, 0.8, 2.0, 4.99, 6.99]],\n",
       "  'boundary': <function ssms.basic_simulators.boundary_functions.weibull_cdf(t=1, alpha=1, beta=1)>,\n",
       "  'n_params': 6,\n",
       "  'default_params': [0.0, 1.0, 0.5, 0.001, 3.0, 3.0],\n",
       "  'hddm_include': ['z', 'alpha', 'beta'],\n",
       "  'nchoices': 2},\n",
       " 'full_ddm2': {'name': 'full_ddm',\n",
       "  'params': ['v', 'a', 'z', 't', 'sz', 'sv', 'st'],\n",
       "  'param_bounds': [[-3.0, 0.3, 0.3, 0.25, 0.001, 0.001, 0.001],\n",
       "   [3.0, 2.5, 0.7, 2.25, 0.2, 2.0, 0.25]],\n",
       "  'boundary': <function ssms.basic_simulators.boundary_functions.constant(t=0)>,\n",
       "  'n_params': 7,\n",
       "  'default_params': [0.0, 1.0, 0.5, 0.25, 0.001, 0.001, 0.001],\n",
       "  'hddm_include': ['z', 'st', 'sv', 'sz'],\n",
       "  'nchoices': 2}}"
      ]
     },
     "execution_count": 4,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "ssms.config.config.model_config"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 5,
   "metadata": {},
   "outputs": [
    {
     "ename": "ImportError",
     "evalue": "cannot import name 'model_config' from 'ssms.config' (/Users/afengler/Library/CloudStorage/OneDrive-Personal/proj_ssm_simulators/ssm-simulators/ssms/config/__init__.py)",
     "output_type": "error",
     "traceback": [
      "\u001b[0;31m---------------------------------------------------------------------------\u001b[0m",
      "\u001b[0;31mImportError\u001b[0m                               Traceback (most recent call last)",
      "\u001b[1;32m/Users/afengler/Library/CloudStorage/OneDrive-Personal/proj_ssm_simulators/ssm-simulators/notebooks/essential_tests.ipynb Cell 18\u001b[0m line \u001b[0;36m1\n\u001b[0;32m----> <a href='vscode-notebook-cell:/Users/afengler/Library/CloudStorage/OneDrive-Personal/proj_ssm_simulators/ssm-simulators/notebooks/essential_tests.ipynb#X23sZmlsZQ%3D%3D?line=0'>1</a>\u001b[0m \u001b[39mimport\u001b[39;00m \u001b[39mssms\u001b[39;00m\n",
      "File \u001b[0;32m~/Library/CloudStorage/OneDrive-Personal/proj_ssm_simulators/ssm-simulators/ssms/__init__.py:3\u001b[0m\n\u001b[1;32m      1\u001b[0m __version__ \u001b[39m=\u001b[39m \u001b[39m\"\u001b[39m\u001b[39m0.5.0\u001b[39m\u001b[39m\"\u001b[39m\n\u001b[0;32m----> 3\u001b[0m \u001b[39mfrom\u001b[39;00m \u001b[39m.\u001b[39;00m \u001b[39mimport\u001b[39;00m basic_simulators\n\u001b[1;32m      4\u001b[0m \u001b[39mfrom\u001b[39;00m \u001b[39m.\u001b[39;00m \u001b[39mimport\u001b[39;00m dataset_generators\n\u001b[1;32m      5\u001b[0m \u001b[39mfrom\u001b[39;00m \u001b[39m.\u001b[39;00m \u001b[39mimport\u001b[39;00m config\n",
      "File \u001b[0;32m~/Library/CloudStorage/OneDrive-Personal/proj_ssm_simulators/ssm-simulators/ssms/basic_simulators/__init__.py:3\u001b[0m\n\u001b[1;32m      1\u001b[0m \u001b[39mfrom\u001b[39;00m \u001b[39m.\u001b[39;00m \u001b[39mimport\u001b[39;00m boundary_functions\n\u001b[1;32m      2\u001b[0m \u001b[39mfrom\u001b[39;00m \u001b[39m.\u001b[39;00m \u001b[39mimport\u001b[39;00m drift_functions\n\u001b[0;32m----> 3\u001b[0m \u001b[39mfrom\u001b[39;00m \u001b[39m.\u001b[39;00m \u001b[39mimport\u001b[39;00m simulator\n",
      "File \u001b[0;32m~/Library/CloudStorage/OneDrive-Personal/proj_ssm_simulators/ssm-simulators/ssms/basic_simulators/simulator.py:3\u001b[0m\n\u001b[1;32m      1\u001b[0m \u001b[39mfrom\u001b[39;00m \u001b[39m.\u001b[39;00m \u001b[39mimport\u001b[39;00m boundary_functions \u001b[39mas\u001b[39;00m bf\n\u001b[1;32m      2\u001b[0m \u001b[39mfrom\u001b[39;00m \u001b[39m.\u001b[39;00m \u001b[39mimport\u001b[39;00m drift_functions \u001b[39mas\u001b[39;00m df\n\u001b[0;32m----> 3\u001b[0m \u001b[39mfrom\u001b[39;00m \u001b[39mssms\u001b[39;00m\u001b[39m.\u001b[39;00m\u001b[39mconfig\u001b[39;00m \u001b[39mimport\u001b[39;00m model_config\n\u001b[1;32m      4\u001b[0m \u001b[39mimport\u001b[39;00m \u001b[39mnumpy\u001b[39;00m \u001b[39mas\u001b[39;00m \u001b[39mnp\u001b[39;00m\n\u001b[1;32m      5\u001b[0m \u001b[39mfrom\u001b[39;00m \u001b[39mcopy\u001b[39;00m \u001b[39mimport\u001b[39;00m deepcopy\n",
      "\u001b[0;31mImportError\u001b[0m: cannot import name 'model_config' from 'ssms.config' (/Users/afengler/Library/CloudStorage/OneDrive-Personal/proj_ssm_simulators/ssm-simulators/ssms/config/__init__.py)"
     ]
    }
   ],
   "source": [
    "import ssms"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 4,
   "metadata": {},
   "outputs": [],
   "source": [
    "import pandas as pd\n",
    "import numpy as np\n",
    "\n",
    "test = pd.DataFrame(np.zeros((100, 4)), columns=[\"a\", \"b\", \"c\", \"d\"])"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 6,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Help on method to_dict in module pandas.core.frame:\n",
      "\n",
      "to_dict(orient: \"Literal['dict', 'list', 'series', 'split', 'tight', 'records', 'index']\" = 'dict', into: 'type[dict]' = <class 'dict'>, index: 'bool' = True) -> 'dict | list[dict]' method of pandas.core.frame.DataFrame instance\n",
      "    Convert the DataFrame to a dictionary.\n",
      "    \n",
      "    The type of the key-value pairs can be customized with the parameters\n",
      "    (see below).\n",
      "    \n",
      "    Parameters\n",
      "    ----------\n",
      "    orient : str {'dict', 'list', 'series', 'split', 'tight', 'records', 'index'}\n",
      "        Determines the type of the values of the dictionary.\n",
      "    \n",
      "        - 'dict' (default) : dict like {column -> {index -> value}}\n",
      "        - 'list' : dict like {column -> [values]}\n",
      "        - 'series' : dict like {column -> Series(values)}\n",
      "        - 'split' : dict like\n",
      "          {'index' -> [index], 'columns' -> [columns], 'data' -> [values]}\n",
      "        - 'tight' : dict like\n",
      "          {'index' -> [index], 'columns' -> [columns], 'data' -> [values],\n",
      "          'index_names' -> [index.names], 'column_names' -> [column.names]}\n",
      "        - 'records' : list like\n",
      "          [{column -> value}, ... , {column -> value}]\n",
      "        - 'index' : dict like {index -> {column -> value}}\n",
      "    \n",
      "        .. versionadded:: 1.4.0\n",
      "            'tight' as an allowed value for the ``orient`` argument\n",
      "    \n",
      "    into : class, default dict\n",
      "        The collections.abc.Mapping subclass used for all Mappings\n",
      "        in the return value.  Can be the actual class or an empty\n",
      "        instance of the mapping type you want.  If you want a\n",
      "        collections.defaultdict, you must pass it initialized.\n",
      "    \n",
      "    index : bool, default True\n",
      "        Whether to include the index item (and index_names item if `orient`\n",
      "        is 'tight') in the returned dictionary. Can only be ``False``\n",
      "        when `orient` is 'split' or 'tight'.\n",
      "    \n",
      "        .. versionadded:: 2.0.0\n",
      "    \n",
      "    Returns\n",
      "    -------\n",
      "    dict, list or collections.abc.Mapping\n",
      "        Return a collections.abc.Mapping object representing the DataFrame.\n",
      "        The resulting transformation depends on the `orient` parameter.\n",
      "    \n",
      "    See Also\n",
      "    --------\n",
      "    DataFrame.from_dict: Create a DataFrame from a dictionary.\n",
      "    DataFrame.to_json: Convert a DataFrame to JSON format.\n",
      "    \n",
      "    Examples\n",
      "    --------\n",
      "    >>> df = pd.DataFrame({'col1': [1, 2],\n",
      "    ...                    'col2': [0.5, 0.75]},\n",
      "    ...                   index=['row1', 'row2'])\n",
      "    >>> df\n",
      "          col1  col2\n",
      "    row1     1  0.50\n",
      "    row2     2  0.75\n",
      "    >>> df.to_dict()\n",
      "    {'col1': {'row1': 1, 'row2': 2}, 'col2': {'row1': 0.5, 'row2': 0.75}}\n",
      "    \n",
      "    You can specify the return orientation.\n",
      "    \n",
      "    >>> df.to_dict('series')\n",
      "    {'col1': row1    1\n",
      "             row2    2\n",
      "    Name: col1, dtype: int64,\n",
      "    'col2': row1    0.50\n",
      "            row2    0.75\n",
      "    Name: col2, dtype: float64}\n",
      "    \n",
      "    >>> df.to_dict('split')\n",
      "    {'index': ['row1', 'row2'], 'columns': ['col1', 'col2'],\n",
      "     'data': [[1, 0.5], [2, 0.75]]}\n",
      "    \n",
      "    >>> df.to_dict('records')\n",
      "    [{'col1': 1, 'col2': 0.5}, {'col1': 2, 'col2': 0.75}]\n",
      "    \n",
      "    >>> df.to_dict('index')\n",
      "    {'row1': {'col1': 1, 'col2': 0.5}, 'row2': {'col1': 2, 'col2': 0.75}}\n",
      "    \n",
      "    >>> df.to_dict('tight')\n",
      "    {'index': ['row1', 'row2'], 'columns': ['col1', 'col2'],\n",
      "     'data': [[1, 0.5], [2, 0.75]], 'index_names': [None], 'column_names': [None]}\n",
      "    \n",
      "    You can also specify the mapping type.\n",
      "    \n",
      "    >>> from collections import OrderedDict, defaultdict\n",
      "    >>> df.to_dict(into=OrderedDict)\n",
      "    OrderedDict([('col1', OrderedDict([('row1', 1), ('row2', 2)])),\n",
      "                 ('col2', OrderedDict([('row1', 0.5), ('row2', 0.75)]))])\n",
      "    \n",
      "    If you want a `defaultdict`, you need to initialize it:\n",
      "    \n",
      "    >>> dd = defaultdict(list)\n",
      "    >>> df.to_dict('records', into=dd)\n",
      "    [defaultdict(<class 'list'>, {'col1': 1, 'col2': 0.5}),\n",
      "     defaultdict(<class 'list'>, {'col1': 2, 'col2': 0.75})]\n",
      "\n"
     ]
    }
   ],
   "source": [
    "help(test.to_dict)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 2,
   "metadata": {},
   "outputs": [],
   "source": [
    "import ssms\n",
    "from ssms.basic_simulators.simulator import simulator\n",
    "from copy import deepcopy\n",
    "\n",
    "my_config = deepcopy(ssms.config.model_config[\"race_2\"])\n",
    "# out = simulator(the, model=\"race_2\", n_samples=1000)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 3,
   "metadata": {},
   "outputs": [],
   "source": [
    "my_theta = {\n",
    "    param_name: (my_config[\"param_bounds\"][0][i] + my_config[\"param_bounds\"][1][i]) / 2\n",
    "    for i, param_name in enumerate(my_config[\"params\"])\n",
    "}"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 4,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "{'v0': 1.25, 'v1': 1.25, 'a': 2.0, 'z0': 0.45, 'z1': 0.45, 'ndt': 0.45}"
      ]
     },
     "execution_count": 4,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "my_theta"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 10,
   "metadata": {},
   "outputs": [],
   "source": [
    "out = simulator(theta=my_theta, model=\"race_2\", n_samples=100000)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 11,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "array([0, 1], dtype=int32)"
      ]
     },
     "execution_count": 11,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "import numpy as np\n",
    "\n",
    "np.unique(out[\"choices\"])"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 12,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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FBYWpujoaC1cuFDnzp3zqtm7d69Gjx4tm82mxMREZWVltX2EAACgx/H5Cszw4cP1+eefm9s//vEPs23+/Pl6/fXXtWXLFuXm5urYsWO65557zPbz588rLS1NdXV12r9/v15++WVlZWVp6dKlZk1JSYnS0tI0YcIEFRQUKCMjQzNnztTOnTuvcqgAAKCn8PkupMDAQMXGxl6y3+1266WXXtKGDRt0++23S5LWr1+v66+/XgcOHNAtt9yiN954Q++//7527dqlmJgYjRo1Sr/+9a/1q1/9So888oiCg4O1du1aJSQk6Mknn5QkXX/99frHP/6hlStXKjU19SqHCwAAegKfr8B8+OGHiouL09e//nVNmTJFpaWlkqT8/HzV19crJSXFrB02bJgGDx6svLw8SVJeXp5GjBihmJgYsyY1NVUej0dFRUVmzYXHaKppOkZLamtr5fF4vDYAANAz+RRgxo4dq6ysLO3YsUNr1qxRSUmJvv3tb+v06dNyuVwKDg6Ww+Hwek9MTIxcLpckyeVyeYWXpvamttZqPB6Pzp4922Lfli9frsjISHOLj2chNgAAeiqfPkK68847zb+PHDlSY8eO1ZAhQ7R582aFhoa2e+d8sXjxYi1YsMB87fF4CDEAAPRQV3UbtcPh0HXXXafi4mLFxsaqrq5OlZWVXjXl5eXmnJnY2NhL7kpqen25Grvd3mpIstlsstvtXhsAAOiZrirAVFVV6aOPPtKAAQOUnJysoKAg7d6922w/evSoSktL5XQ6JUlOp1OFhYWqqKgwa3JycmS325WUlGTWXHiMppqmYwAAAPgUYH75y18qNzdX//u//6v9+/frRz/6kQICAvSTn/xEkZGRmjFjhhYsWKA333xT+fn5+vnPfy6n06lbbrlFkjRx4kQlJSVp6tSp+u///m/t3LlTS5YsUXp6umw2myRp9uzZ+vjjj7Vo0SL9z//8j1avXq3Nmzdr/vz57T96AABgST7Ngfn000/1k5/8RCdOnNA111yj2267TQcOHNA111wjSVq5cqX8/f01adIk1dbWKjU1VatXrzbfHxAQoG3btmnOnDlyOp0KDw/XtGnTtGzZMrMmISFB2dnZmj9/vlatWqVBgwZp3bp13EINAABMPgWYjRs3ttoeEhKizMxMZWZmtlgzZMgQbd++vdXjjB8/XocPH/alawAAoBfhWUgA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",
      "text/plain": [
       "<Figure size 640x480 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "from matplotlib import pyplot as plt\n",
    "\n",
    "for i in range(2):\n",
    "    plt.hist(out[\"rts\"][out[\"choices\"] == i], histtype=\"step\", bins=50)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": []
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "ssms_dev",
   "language": "python",
   "name": "ssms_dev"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.10.12"
  },
  "orig_nbformat": 4
 },
 "nbformat": 4,
 "nbformat_minor": 2
}
